web-dev-qa-db-ja.com

BambooおよびMavenとの継続的な統合、バージョン番号の管理?

私は現在、いくつかの主要部分に分割された製品を開発しています:サーバー、Androidクライアント、デスクトップクライアント、および一般的なデータ構造を提供するためのクラスライブラリ。現在、私のチームはMaven(プライベートNexusリポジトリを使用)とTeamCityを使用して継続的な統合を行っていますが、バージョン番号の問題が原因でビルドが失敗するという問題が山積しています。現在の解決策では、 Auto -Mavenのバージョンプラグイン をインクリメントしますが、pomファイルに変更を加えるたびに、Gitのpomのバージョンがなくなったため、pomファイルのバージョンを手動で更新する必要があります。日付。

私のチームと私はAtlassian Bambooを見ることにしました。ワークフローに変更を加えているので、これらの問題を一度に解決したいと思います。これが私たちが探しているものです:

  1. メジャーおよびマイナービルド番号(0.3など)を指定し、結果のアーティファクトをmajor.minor.auto-incrementing-build-number(0.3.2、0.3.3、0.4など)としてリポジトリにデプロイします。 0)。
  2. 何人かの開発者がいて、1人の人が間違えるだけで全員のワークフローに混乱が生じるため、これは可能な限り自動化したいと考えています。
  3. Bambooの「クローンプロジェクト」機能を使用すると、この機能を複数のアプリケーション間ですばやく複製でき、すべてのpomファイルに管理用の大量の追加コードが含まれないようにできるため、この機能をBambooで可能にすることをお勧めします。バージョン。

誰かがBambooを介してこのようなことをした経験はありますか、またはこれを簡単にするために検討する必要がある別のアプローチはありますか?

4
Brendon Dugan

Mavenスナップショット機能を使用したスナップショットアプローチを使用すると、すぐに問題なく動作します。

Mavenは、特定のメジャー/マイナービルド番号のリポジトリから最新のスナップショットリリースを自動的に取得します。

その後、リリースを行うときにメジャー/マイナーバージョン番号を更新するだけで済み、mavenはmaven :: releaseコマンドを使用してそれを行うことができます。

私は通常、Jenkins/Hudsonを使用してリリースをビルドし、ビルドの完了時にアーティファクトをリポジトリにアップロードします。以前にTeamCityを使用したことがありますが、Jenkinsの方がはるかに機能的なCIユーティリティであることがわかりました。

1
sweetfa

Sweetfaが提案した、最善のアプローチは、開発にMavenのSNAPSHOTバージョンを使用することです。バージョンは、Mavenリリースプラグインを使用してリリース時にのみ増加します。これらはすべてJenkinsから自動化できます。

リリース以外のときにアーティファクトバージョンを増やす必要がある理由はわかりません。より細かくコードを保持するためのgitがあり、いつでもビルドを実行できます。

0
m3th0dman