2016-08-20 7 views
2

ビルドおよびデプロイメントインフラストラクチャでは、マルチモジュールのMavenプロジェクトを構築するJenkinsの仕事があり、最近はその結果の成果物(オムニバスのタールボールを含む) 。ビルドジョブが実行されたPOM(ビルドジョブはPOMをアーカイブして、ビルドジョブではPATをアーカイブして、tarballを取得することができるように、Nexusから必要なアーティファクトを引き出す別のジョブ(ビルドジョブが成功するとトリガされることもあります)依存関係:コピーゴール)。リリースの場合、これは正常に動作し、ロールバックシナリオが必要な場合は以前のバージョンを配備することもできます。ただし、POMにはアーチファクトが-SNAPSHOT以上のバージョン識別子は含まれていないため、SNAPSHOTビルドではこれが解消されます。Nexusに保存されている古いスナップショット成果物をプログラムで使用する方法

ビルド出力には、ビルドが完了した後にグレープ可能な情報が含まれているため、これをバージョンとして使用できます。 Mavenのに精通している人は、次のMavenの出力スニペット認識します:

[INFO] Uploading: http://nexus.eng.company.com/nexus/content/repositories/snapshots/com/company/application/application-dist/4.19.3-SNAPSHOT/application-dist-4.19.3-20160819.223606-7-eng.tar.gz 

[INFO] Uploaded: http://nexus.eng.company.com/nexus/content/repositories/snapshots/com/company/application/application-dist/4.19.3-SNAPSHOT/application-dist-4.19.3-20160819.223606-7-eng.tar.gz (109687 KB at 413.1 KB/sec) 

をしかし、より良い方法はありますか?具体的には、開発者が以前のビルドを展開する(通常は機能ブランチビルドを展開する)ことができますが、現在のところ、日付スタンプ付きのバージョン識別子を取得する方法が見つからない限り、これは不可能です。

+0

これは(http://stackoverflow.com/q/38163124/5606016)助けますか?その答えに応じて、mavenはブランチ名とSNAPSHOTに基づいて自動的に動的に分類器を作成し、事実上SNAPSHOTの成果物をユニークでタイムスタンプのついたユーザーフレンドリーなものにしました –

+0

@ A_Di-Matteo - 一意の識別子を作成するためにbuildhelperプラグインが必要であり、それを分類子に使用しました。 Jenkinsには、各ビルドのブランチを追跡するための情報が格納されています。答えを正式に書いておきたいなら、私はそれを受け入れます。 – OrionRogue

答えて

2

可能な解決策は、classifierを使用する動的プロパティを作成することです。 build-helper-maven-pluginは、この場合に役立ちます。

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.10</version> 
    <executions> 
     <execution> 
      <id>regex-property</id> 
      <goals> 
       <goal>timestamp-property</goal> 
      </goals> 
      <configuration> 
       <name>custom.classifier</name> 
       <pattern>yyyy-MM-dd_HH-mm-ss.SSS</pattern> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <artifactId>maven-jar-plugin</artifactId> 
    <version>3.0.2</version> 
    <configuration> 
     <classifier>${custom.classifier}</classifier> 
    </configuration> 
</plugin> 

私たちは、新しいプロパティを作成custom.classifier、及び分類器がするので、何のスペースや無効な文字は、それの一部でなくなるように細工pattern要素(で定義されたタイムスタンプとそれを充填している上:以下付き最終的なファイル名の一部である)。

次に、maven-jar-pluginのケースでは、分類子が適切に設定されます。

さらに、上記の動作をMaven profileにラップして、CIジョブに対してのみアクティブにすることができます。

関連する問題