2017-08-19 12 views
3

こんにちは、CIとCD用にgitlab ciを使い始めました。私は瓶と戦争を保存するためにNexusを使用しています。Mavenプロジェクト用にgitlab ci + 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 releaseプラグインを使用しているからです。

リリースプラグインは、スナップショットの変更を変更してgitlabに再度コミットします。その時にgit labのトリガーが再びビルドするので、それは循環トリガーだからです。

これを正しく処理する方法は?私は以下を達成するのが好きです。

マスターブランチをビルドするとき、最終バージョンをnexusにリリースし、リリースプラグインのようにpomファイルのバージョンを自動的に増やしたいと思います。

+0

私は1レベルの苦労して苦労しています。資格証明とプロファイルを持つsettings.xmlをどうやってmaven:3-jdk-8イメージに向けるのか教えていただけますか?またはいくつかのリンクを提供することができれば、多くのthx。私はあなたと同じように達成するつもりです。 – kensai

+0

@kensaiグループレベルの変数を追加してそこに保存しました。 –

答えて

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を防止接頭辞を持つコミットメッセージを作成します
関連する問題