【问题标题】:How to configure gitlab ci + nexus release for Maven projects如何为 Maven 项目配置 gitlab ci + nexus 版本
【发布时间】:2018-01-27 23:40:06
【问题描述】:

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

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 triggers 再次构建,所以它是因为循环触发器。

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

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

【问题讨论】:

  • 我在下面挣扎了一层,你能告诉我你是如何将带有凭据和配置文件的 settings.xml 指向 maven:3-jdk-8 图像的吗?或者如果你能提供一些链接,谢谢。我要达到和你一样的目标。
  • @kensai 我添加了 Group Level 变量并存储在那里。

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    你可以使用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/

    【讨论】:

      猜你喜欢
      • 2021-05-24
      • 2012-12-22
      • 2019-08-20
      • 2016-01-30
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      相关资源
      最近更新 更多