您好,我开始将 gitlab ci 用于我的 CI 和 CD。我正在使用 Nexus 来存储我的 jar 和 war 。
gitlab配置
stages:
- build
- package
services:
- name: mongo:3.2.4
alias: mongodb
variables:
mongodb_hosts: "mongodb"
build_maven:
image: maven:3-jdk-8
stage: build
script:
- echo $pwd
- "./docker/wait-for-it.sh mongodb:27107 -t 30 -- git checkout master && mvn -B -Dresume=false release:prepare release:perform"
artifacts:
paths:
- target/*.jar
only:
- master
这工作正常,但它触发了构建循环方式。因为我正在使用 maven 发布插件来发布 maven 人工制品。
发布插件更改快照并再次提交回gitlab。在那段时间 git lab 再次触发构建,所以它是因为循环触发。
如何正确处理?我喜欢实现以下目标。
当它构建主分支时,我喜欢将最终版本发布到nexus 并像发布插件一样自动增加pom 文件中的版本。
最佳答案
我有以下发布 Artifact 的工作:
Release Maven:
stage: release
image: maven:3-jdk-8
script:
- git checkout master
- git reset --hard "origin/master"
# Gitlab clones as HTTPS and there's no plan to support SSH
# The SSH key needed is built into the custom Maven image
- git remote set-url origin $SSH_GIT_URL
- mvn --batch-mode clean release:prepare release:perform -Dresume=false -DautoVersionSubmodules=true -DdryRun=false -Dmaven.test.skip=true -DskipITs -DscmCommentPrefix="[ci skip]"
这里的主要属性是 -DscmCommentPrefix="[ci skip]"
- 这会创建一个带有前缀的提交消息,防止 gitlab-ci 启动一个新的管道
关于java - Maven项目如何配置gitlab ci + nexus release,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45770980/