1

Jenkinsでパラメータ化されたジョブを作成しました。

  • ラベル「V_x_y_z」に基づいてソースを取得します(JenkinsとSVNの統合)
  • ラベルを渡してMavenを実行します
  • POMはbuild-helper-maven-pluginを使用してバージョンxyzを計算します

結果のアーティファクトは正しいですが、バージョンが間違っています。

コマンドラインでバージョンをversions-maven-pluginに渡す以外に、結果のPOMバージョンを変更する方法がわかりません。しかし、Jenkinsには、ラベルを解析してバージョンに変換する方法がありません。

したがって、「悪い」オプションしかないようです。

  1. ユーザーにビルドとラベルの両方を入力するように要求する-エラーが発生しやすい
  2. JenkinsではなくMavenでチェックアウトを実行します。これにより、POM自体がバージョン管理されたアイテムであるため、関心の分離が破られます。
  3. スクリプト(Pythonなど)でMavenをラップしますが、JenkinsとMavenの統合のメリットが失われます

これは平凡なユースケースであり、簡単にサポートできると思っていたでしょう。重要な要素が不足しているのでしょうか。

4

1 に答える 1

1

それを達成するための最良のアプローチは、2つのビルド前のステップを実行することだと思います:

  1. 操作されたバージョンで Java プロパティ ファイルを作成するシェル スクリプトを呼び出す

    echo "MYVERSION=$LABEL" | sed -e 's/_/./g' > new_property_file.properties

  2. そのプロパティ ファイルを読み取り、新しく作成された環境変数を挿入する EnvInject プラグイン ステップを呼び出します。

その後、maven コマンドへの入力として新しい環境変数を使用して maven プラグインを呼び出すことができます。

于 2012-11-12T08:21:13.060 に答える