Copy Airtifact Plugin は、指定のジョブ、指定のビルドの成果物をワークスペースにコピーするプラグインです。
今回は、以下のようなパイプラインがあったとき、下流ジョブ(TEST)が上流ジョブ(BUILD_DEBUG or BUILD_RELEASE)から成果物をコピーして利用したいケースを考えます。
TEST は BUILD_DEBUG,BUILD_RELEASE のどちらからも流れてきます。
そして TEST ジョブではそれぞれ上流の成果物を利用するとします。
通常、成果物のコピーをする場合、Copy Airtifact Plugin を使うと思いますが、
不特定のジョブからコピーを行う場合も、このプラグインを使います。
まず、コピー元のジョブ名には環境変数を使えます。
ここでは、ARTIFACT_JOB としました。
この ARTIFACT_JOB を上流ジョブ名にするために、Parameterized Trigger Plugin を使ってジョブ名をパラメータとして引き渡します。
(同様に、ビルド番号も環境変数 ARTIFACT_NUMBER に設定し、上流ジョブから受け取るようにしています。)
設定としては、「Predefined parameters」に
AIRTIFACT_JOB=$JOB_NAME AIRTIFACT_NUMBER=$BUILD_NUMBER
もう1つ重要な設定があります。
コピー元のジョブ名に環境変数を使用した場合、コピー元のジョブからコピーの許可を得る必要があります。
コピー元のジョブの設定に「成果物のコピーの許可」がありますので、コピー先のジョブ名を入力してください。
設定は以上で完了です。
実際に動かしてみましょう。
動作結果
BUILD_DEBUG から実行した場合BUILD_RELEASE から実行した場合
このように BUILD_DEBUG から debug.txt、BUILD_RELEASE から log.txt が利用されるようになりました。
処理する内容は同じで、対象だけが異なる場合に役立つと思います。
(※ マトリックスを組む手もあります)
今回は以上です。
下流のジョブ設定で、上流ジョブから渡された引数を定義(初期化?)する必要があるらしいです。
返信削除ありがとうございます!
削除これを書いてた時はなくても動いてたんですが、必要になったみたいですね。
追記しておきました。