如何为Maven项目配置gitlab ci + nexus发行版

时间:2017-08-19 11:27:13

标签: java maven gitlab-ci gitlab-ci-runner

您好我开始将gitlab ci用于我的CI和CD。我正在使用Nexus存储我的罐子和战争。

gitlab config

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 release插件发布maven artefacts。

发布插件更改了快照的更改并再次提交回gitlab。在那个时候git lab再次触发构建,所以它因为循环触发器。

如何正确处理?我想实现以下目标。

当它构建主分支时,我喜欢将最终版本发布到nexus并自动增加pom文件中的版本,就像发布插件一样。

2 个答案:

答案 0 :(得分:2)

我有以下工作来发布工件:

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启动新的管道

答案 1 :(得分:1)

您可以使用gitlab ci 除了变量

release:
  stage: release
  only:
    - /^(release|RELEASE).*/
  except:
     variables:
        - $CI_COMMIT_MESSAGE =~ /maven-release-plugin/
  script:
    - git checkout -B "$CI_BUILD_REF_NAME"
    - mvn -B release:prepare ...

有关变量的更多信息:https://docs.gitlab.com/ee/ci/variables/