web-dev-qa-db-ja.com

Mavenプロジェクトのgitlabci + nexusリリースを構成する方法

こんにちは私はCIとCDにgitlabciを使い始めました。私は瓶と戦争を保管するために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アーティファクトのリリースにMavenリリースプラグインを使用しているためです。

リリースプラグインはスナップショットの変更を変更し、再びgitlabにコミットします。その間にgitlabトリガーが再びビルドされるので、循環トリガーのためです。

これを適切に処理する方法は?私は次のことを達成したいと思います。

マスターブランチをビルドするとき、私は最終バージョンをnexusにリリースし、リリースプラグインと同じようにpomファイルのバージョンを自動的に増やすのが好きです。

9
vimal prakash

アーティファクトをリリースするための次の仕事があります。

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が新しいパイプラインを開始できなくなります。

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/

2
S. Toledano