UPDATE#1 9/18
私の会社は、増え続ける開発者に合わせて、開発/リリースサイクルを完全に刷新することを決定しました。
gitプロセスは、いくつかの変更を加えた成功した分岐モデルに似ています。開発者が「開発」ブランチに直接プッシュアクセスする代わりに、開発者はマージ/プルリクエストを行う必要があり、コードレビューと基本的な単体テストが必要になります。
バージョンシステムはMajor.Minor.Patchであり、メジャーバージョンは下位互換性の破れを示し、マイナーバージョンは新機能とマイナーバグ修正を示し、パッチは重要なホットフィックスを示します。この新しいバージョンのシステムは、有用な情報としてJenkinsビルド番号を削除しますが、履歴の目的でデプロイされたアーティファクトに添付します。
「開発」ブランチは、スナップショットを構築してローカルのNexusにデプロイするために、Jenkinsによって追跡されるため、開発者は未リリースですが受け入れられている機能を利用できます。「マスター」ブランチもJenkinsによって追跡され、リリースアーティファクトをビルドおよびデプロイします。
リリースプロセスは次のようになります。
- リリースされた機能に基づいてPOMバージョンを更新します
- ブランチに新しいバージョンのGitタグを付ける
- ユニット、統合、およびシステムテストを実行します。
- リリースアーティファクトをビルド、難読化、およびNexusにデプロイします
- 新しい開発SNAPSHOTの「develop」ブランチバージョンを「Major.Minor++-SNAPSHOT」に更新します。
元の投稿
難読化され、Jenkins / Hudsonビルドに基づく動的ビルド番号を使用し、社内のSonatypeNexusにデプロイされているJARライブラリをビルドしようとしています。
私の問題は、Mavenのインストール/デプロイがfinalNameへの変更を尊重せず、次のような式でバージョンを設定することは「悪い習慣」と見なされることです。
<version>1.0.${buildNumber}</version>
これは悪い習慣ですが、ローカルとリモートの両方で、適切なバージョンのアーティファクトを適切にインストール/デプロイします。ビルド番号は、Jenkinsビルドシステムのビルド番号環境変数の存在にリンクされているプロファイルのペアに基づいており、その変数がない場合はデフォルトで0になります。
<profile>
<id>static_build_number</id>
<activation>
<property>
<name>!env.BUILD_NUMBER</name>
</property>
</activation>
<properties>
<buildNumber>0</buildNumber>
</properties>
</profile>
<profile>
<id>dynamic_build_number</id>
<activation>
<property>
<name>env.BUILD_NUMBER</name>
</property>
</activation>
<properties>
<buildNumber>${env.BUILD_NUMBER}</buildNumber>
</properties>
</profile>
Nexusにコミットされてプッシュされるバージョンは、テスト済みのリリースバージョンと見なされるため、SNAPSHOTバージョンは使用しません。
Jenkins / Hudsonの動的ビルド番号に基づいてMavenバージョンを設定し、その更新されたバージョンでデプロイできるようにする「適切な」方法はありますか?