Jenkinsには2つのジョブがありますが、どちらも同じパラメーターが必要です。
パラメーターで最初のジョブを実行して、2番目のジョブをトリガーするときに同じパラメーターが使用されるようにするにはどうすればよいですか?
Parameterized Trigger Plugin を使用すると、1つのタスクから別のタスクにパラメーターを渡すことができます。
アップストリームからダウンストリームに渡したこのパラメーターも追加する必要があります。
1.ビルド後のアクション> [他のプロジェクトのトリガーパラメーター化ビルド]を選択します
2.環境変数に値を入力します。値はJenkins Build Parametersにすることもできます。
詳細な手順はこちらをご覧ください:-
役に立てば幸いです:)
受け入れられた回答 は、私のユースケースでは機能しません。あるジョブでパラメータを動的に作成し、別のジョブに渡す必要がありました。 Mark McKenna が言及しているように、シェルビルドステップからビルド後のアクションに変数をエクスポートする方法はないようです。
Parameterized Trigger Plugin を使用して回避策を達成しました。値をファイルに書き込み、そのファイルを「Add post-build action」->「Trigger parameterized build ...」でインポートするパラメーターとして使用します[パラメータの追加]-> [プロパティファイルのパラメータ]を選択します。
上記の答えには更新が必要だと思います:
アップストリームビルドアーティファクトを格納する動的ディレクトリを作成しようとしていたので、アップストリームジョブのビルド番号をダウンストリームジョブに渡したいと思っていましたが、上記の手順を試してもうまくいきませんでした。仕組みは次のとおりです。
これは、jenkinsの新しいバージョンでは、ダウンストリームジョブでも変数を定義する必要があるためです。お役に立てば幸いです。
(グーグル仲間向け)
Build Flow Plugin を使用して深刻なパイプラインを構築している場合、次のようにDSLを使用してジョブ間でパラメーターを渡すことができます。
他のジョブに渡すために、使用可能な文字列パラメーター「CVS_TAG」を想定します。
build("pipeline_begin", CVS_TAG: params['CVS_TAG'])
parallel (
// will be scheduled in parallel.
{ build("pipeline_static_analysis", CVS_TAG: params['CVS_TAG']) },
{ build("pipeline_nonreg", CVS_TAG: params['CVS_TAG']) }
)
// will be triggered after previous jobs complete
build("pipeline_end", CVS_TAG: params['CVS_TAG'])
利用可能な変数/パラメータを表示するためのヒント:
// output values
out.println '------------------------------------'
out.println 'Triggered Parameters Map:'
out.println params
out.println '------------------------------------'
out.println 'Build Object Properties:'
build.properties.each { out.println "$it.key -> $it.value" }
out.println '------------------------------------'
まだコメントできないので、ナイジェルカービーのものに加えて私の答えを追加してください:
動的に作成されたパラメーターを渡すには、「Execute Shell」タイルで変数をエクスポートし、「他のプロジェクトのトリガーパラメーター化ビルド」=>「事前定義パラメーター」=>「YOUR_VAR = $ YOUR_VAR」を渡します。私のチームはこの機能を使用して、ビルドジョブから展開ジョブにnpmパッケージバージョンを渡します
更新:上記はJenkinsが注入したパラメーターに対してのみ機能します。シェルから作成されたパラメーターは同じメソッドを使用する必要があります。例えば。 YOUR_VAR = $ {YOUR_VAR}> variable.propertiesをエコーし、そのファイルをダウンストリームに渡します
PomバージョンをダウンストリームのRundeckジョブに渡す必要があるときに、同じ問題に直面しました。
私がやったことは、プロパティファイルを介したパラメータインジェクションを使用することでした:
1)シェルを介してプロパティファイルにプロパティを作成します。
ビルドアクション:
例: プロパティ定義
2)定義されたプロパティをダウンストリームジョブに渡す:ビルド後のアクション:
例: プロパティ送信
3)その後、ダウンストリームRundeckジョブで$ POM_VERSIONを使用することができました。
/!\ Jenkinsバージョン:1.636
/!\トリガーされたビルドを作成するときに何らかの理由で、プロパティを渡すためにオプション「現在のビルドパラメーター」を追加する必要がありました。
答えを読んで、私が好きな別のオプションが表示されないので、それも提供します。私はジョブのパラメーター化が大好きですが、それが常にうまくスケールするとは限りません。最初のジョブのすぐ下流ではなく、パイプラインのさらに下にあるジョブがある場合、パラメーターを最後まで渡すことができるように、パイプライン内のすべてのジョブをパラメーター化する必要はありません。または、他のさまざまなジョブ(特に1つの親ジョブまたはマスタージョブに必ずしも関連付けられていないもの)で使用される多数のパラメーターがある場合、パラメーター化は機能しません。
これらの場合、値をプロパティファイルに出力し、 EnvInject プラグインを使用して必要なジョブに値を挿入します。これは動的に実行できます。これは、パラメーター化されたジョブがまだ使用されている上記の別の回答からの問題を解決する別の方法です。このソリューションは、多くのシナリオで非常にうまく拡張できます。
この他の投稿で私の答えを見てください:
私のために働いた(パラメータは親ジョブだけでなく両方のジョブで指定する必要がある)