私は解決策を見つけたと信じています。
概要
- パーマリンクで指定
- 特定のビルドを使用し、ビルド番号を
${PROMOTED_NUMBER}
ソリューション
前提条件
- Copy Artifact プラグインをインストールする必要があります。
- プロモーションにアクセスさせたいアーティファクトをアーカイブします
- ビルド後のアクションで、アーティファクトをアーカイブするアクションを追加し、アーカイブするファイルをプロモーションにアクセスさせたいものに設定します。
- 古いアーティファクトを破棄しないでください
- ジョブ構成で、[古いビルドを破棄]の選択を解除するか、ビルドを昇格させたい限りその設定がアーティファクトを保持するようにします。
プロモーションの設定:
通常どおり、昇格したビルドを名前と基準でセットアップします。
[Actions] セクションで、[ Copy artifacts from an other project]アクションを追加し、これらの値を設定します。
- プロジェクト名:
${PROMOTED_JOB_NAME}
- どのビルド: 特定のビルド
- ビルド番号:
${PROMOTED_NUMBER}
- コピーするアーティファクト:
path/to/your/artifacts/**
- 目標:
${BUILD_TAG}
次に、本当にやりたいアクションを追加します。たとえば、アーティファクトを保存するためにアーティファクトをアーカイブするアクションを追加します。パスにプレフィックスを付けることを忘れないでください${BUILD_TAG}
。${BUILD_TAG}/path/to/your/artifacts/**
理由についてのメモ
アーティファクトのコピー
おそらくご存じのとおり、プロモーションでは、ビルドのワークスペースのコンテンツにアクセスする必要はありません。別のサーバーで実行される可能性があり、ワークスペースにまったくアクセスできないか、古いビルドまたは新しいビルドのワークスペースにアクセスできない可能性があります。したがって、使用するアーティファクトを現在のワークスペースにコピーする必要があります。
これは、ターゲット値が設定されている理由でもあります。ワークスペースは、他のビルドまたはプロモーションで汚染されている可能性があります。ターゲットを に設定${BUILD_TAG}
昇格プロセスに固有のフォルダーを作成することにより、ワークスペースに既に存在するファイルとの競合を防ぎます。
${PROMOTED_*} 変数
あなたが述べたように、通常のビルド変数は昇格プロセス自体を参照しますが、Promoted Build Plugin は代わりに実際のビルドを参照するいくつかの環境変数を定義します。
パーマリンク
Jenkins のコンテキストでは、パーマリンクは、何らかのタイプの最新ビルドまたは最新のプロモーションを指す特別なリンクのみを参照します。そのため、常に最新バージョンを入手できます
私のバージョンの Jenkins では、ドロップダウンがテキスト ボックスに置き換えられています。のような特定のビルドへの URL の書き込みは、特別なパーマリンクの 1 つとして認識されないhttp://jenkins/job/myjob/59/
ため、コピーは失敗します。