Maven 2、Bamboo 3.1、およびJIRA4.3を使用してリリースを管理するための最良の方法を見つけたいと思います。私は多くのことを試しましたが、バグや機能の欠如のために行き止まりになり続けています。
私の最終目標は、バージョンをJIRAから取得し、Bambooにそれらのバージョンを取得させ、Mavenを使用してそれらからアーティファクトを構築し、それらのアーティファクトをリポジトリー(この場合はNexus)にデプロイすることです。
これが私が試したアプローチです:
1)プロジェクトバージョンのすべてのpomでプレースホルダーを使用します。
親pom
<project ...>
<groupId>group</groupId>
<artifactId>parent</artifactId>
<version>${ci.version}</version>
...
<modules>...</modules>
</project>
子ポン
<project ...>
<parent>
<groupId>group</groupId>
<artifactId>parent</artifactId>
<version>${ci.version}</version>
</parent>
<artifactId>child</artifactId>
...
</project>
これは、プロジェクトのルートpomからビルドを開始-Dci.version=<my-version>
し、コマンドラインで指定した場合にビルドされます。これをBambooリリース管理プラグインと組み合わせると、モジュールのバージョンをビルドしてデプロイし、必要に応じてリリースできます。
このアプローチの問題は、Mavenがデプロイまたはインストール時にpomsのプレースホルダー変数を置き換えないことです。つまり、リポジトリ内のpomに${ci.version}
は、具体的なバージョンが本当に必要なときにマーカーがあります。プレースホルダーがあるため、私が展開したモジュールを誰も使用できないことを意味します。MNG-2971を参照してください。
2)pomで具体的なSNAPSHOTバージョンを使用し、Bambooリリース管理プラグインを使用してMavenリリースプラグインを実行するようにbambooを構成します。
残念ながら、Mavenリリースプラグインではバージョンをインクリメントする必要があります。bambooプラグインでは、ビルドする現在のバージョンの名前を取得できますが、次のバージョンの名前を取得することはできません。この情報がないと、Mavenリリースプラグインを使用して、バージョンをJIRAによって管理されていないものにインクリメントします。このオプションを機能させるには、次のバージョンを利用できるようにするか、Bambooリリース管理プラグインがそれを実行した後にプランを実行できるようにする必要があります(この2番目の修正では、コミットログに余分な混乱が追加されます自動増分用に1つのコミットを取得し、適切な増分用に1つのコミットを取得します)。
2.b)2)と同じですが、プラン構成インターフェースを介してリリースをビルドする前に、Bambooで次のバージョンを指定する必要があります。値を手動で、プランが機能する次のJIRAバージョンに設定します。これにより、2)の問題が修正されますが、手動の手順が追加されます。
3)おそらくMavenリリースプラグインを使用して、手動で処理を実行します。Bambooのすべてのリリース機能を完全に無視し、Mavenリリースプラグインの目標を呼び出して必要に応じてバージョンを変更することにより、コマンドラインでリリースを手動で管理します。これが発生した場合は、JIRAバージョンも手動でリリースする必要があります。また、リリースプラグインが非SNAPSHOTバージョン用に作成するタグを実行およびテストするようにbambooビルドを構成する必要があります。
このオプションには非常に多くのプロセスが含まれており、何かがうまくいかない可能性があります。
これらのテクノロジーを使用して自動リリースを取得しようとしているのは私だけではありません。誰でも助けてくれます。
ありがとう