Jenkinsパイプライン:ジョブj1をトリガするパイプラインp1があり、次にj2がトリガされます。 j1によって設定され、パイプラインp1でj2に渡されるいくつかのパラメータが必要です。 Jenkinsパイプラインプラグインを使用してこの機能を実装するにはどうすればよいですか?事前に感謝同じパイプラインに戻る(パイプラインによってトリガされる)ジョブからのパラメータ/結果を返す
答えて
私は同様の問題がありました。ジョブJ1、J2にプロパティファイルを作成させてから、メインパイプラインP1の「アーティファクトのコピー」を使用してこれらのファイルを取得する必要がありました。その後、プロパティをJavaプロパティに変換します(Jenkinsではスクリプトの承認が必要な場合があります)。 Jenkins Pipelineがコードで直接パラメータを返すことができればいいでしょう(おそらくこれを行うには離れていますが、わかりません)。ビルドステップからの復帰はRunWrapperです(ビルドの説明のような既存のプロパティを使用しない限り)私が見ることができるカスタム結果を返す方法はないようです。
// Pipeline code in P1
// Build J1 and get result.
def j1BuildResult = build job: 'J1', parameters: [string(name: 'J1_PROP', value: 'FOO')], propagate: true, wait: true
// Get results of J1
step([$class : 'CopyArtifact', filter: 'j1-result.properties',
fingerprintArtifacts: true,
flatten : true,
projectName : 'J1',
selector : [$class : 'SpecificBuildSelector', buildNumber: buildResult.getNumber().toString()]])
// Load J1 properties (you may need to turn off sandbox or approve this in Jenkins)
Properties j1Props = new Properties()
j1Props.load(new StringReader(readFile('j1-result.properties')))
// Build J2
def j2BuildResult = build job: 'J2', parameters: [string(name: 'J2_PROP', value: j1Props.someProperty)], propagate: true, wait: true
// Get results of J2
step([$class : 'CopyArtifact', filter: 'j2-result.properties',
fingerprintArtifacts: true,
flatten : true,
projectName : 'J2',
selector : [$class : 'SpecificBuildSelector', buildNumber: buildResult.getNumber().toString()]])
// Load J2 properties (you may need to turn off sandbox or approve this in Jenkins)
Properties j2Props = new Properties()
j1Props.load(new StringReader(readFile('j2-result.properties')))
:
だから私はこのような何かを持っていました。 j1
がその情報をビルドのenv
に追加するように管理している場合。
j1
がパイラインだった場合、env.MYKEY=MYVALUE
にすることができます。 フリースタイルの仕事の場合、私はそれがEnvInject plugin(試していない)を使って動作するはずだと思います。 p1
の場合、ビルド結果から外れた場合は、その情報を持つ地図が表示されます。
あなたがp1
何かラインでこれを行うのであれば、:
// somewhere in your pipeline, i.e. p1:
def j1BuildResult = build job: 'J1'
def j1EnvVariables = j1BuildResult.getBuildVariables();
を、その後j1EnvVariables
あなたはj1
に設定された変数を含むマップになります。
PS:その情報をパラメータとして渡す方法p2
です。カバーされたhere。
それは私のための例外を生成します:org.kohsuke.stapler.NoStaplerConstructorException:java.lang.Stringクラスのコンストラクタに@DataBoundConstructorがありません 修正するための考え方 – OlivierTerrien
'EnvInject plugin'で試してみましたが動作しません。 – igreen
あなたは、環境変数と一緒にパラメータを構築得ることができます
def buildProperties = runWrapper.rawBuild.getEnvironment()
を使用してそれがグルーヴィーなマップです。 「インプロセススクリプト承認」でmethod hudson.model.Run getEnvironment
を可能にし、(なぜならrawBuild
の)node
クロージャ内でこのコードを呼び出す必要があり:ターゲットパラメータは
String someProperty = buildProperties.someProperty
制限が受信することができます。
私もrunWrapper.rawBuild.getAction(ParametersAction.class)
を試しましたが、それはJenkinsfileに多くのインポートが必要です。
注:runWrapper.getBuildVariables()
は私のために何も返しません。
- 1. MySQLのクエリ結果のパイプライン
- 2. パイプラインを破って部分的な結果を保持する
- 3. パイプライン - パラメータ化されたトリガープラグイン
- 4. Jenkins:パイプラインが1つに複数のパイプラインを結合する
- 5. パイプラインから別のパイプラインに最適なパラメータ(GridSearchCVを使用)を渡す方法
- 6. 宣言的パイプラインで別のジョブからジョブを開始するにはどうすればよいですか?
- 7. Scrapyパイプラインから返された値を取得する
- 8. 中間結果をパイプラインから画面に出力するにはどうすればよいですか?
- 9. MongoDB $ geoNear集計パイプライン(クエリオプションを使用し、$ matchパイプライン操作を使用)異なる結果を返します
- 10. outパラメータの結果がノードpg module-postgresqlによって返される
- 11. jenkinパイプラインでコミットメッセージを使ってジョブをトリガする方法はありますか?
- 12. jenkinsパイプラインにgitパラメータを追加する
- 13. パイプラインのjenkinsfileから別のjenkinsジョブをトリガーする
- 14. パイプラインでのビルド結果のダウンロード
- 15. Jenkinsパイプラインから複数のロボットテスト結果を公開
- 16. Jenkinsパイプラインの結果メトリック解析
- 17. BASHスクリプト:コマンドの結果とパイプライン
- 18. ジェンキンのパイプラインから別のパイプラインに出力を渡す方法
- 19. GitLab CIパイプラインがランナーからプッシュによってトリガーされない
- 20. Ember peekAllによって返された結果がクラックする
- 21. 異なる 'n_jobs'パラメータで同じ結果を返さない恥ずかしがっているパラレルヘルパー
- 22. Jenkinsさんがパイプラインからジョブを呼び出しました
- 23. ジョブDSLパイプライン構成トリガー
- 24. 別のパイプライン内からパイプラインを排水するにはどうすればよいですか?
- 25. XProcパイプラインのxsltにdocument()パラメータを渡す
- 26. scikit-learnでGridSearchCVによってネストされたパイプラインのパラメータをチューニングする方法は?
- 27. "パイプライン"タイプのジョブを作成するジョブDSL
- 28. パイプラインがプル要求からトリガされているかどうかを確認する方法
- 29. nettyチャネルのパイプラインは同じスレッドで行われますか?
- 30. Groovy:同じパラメータ、異なる結果
何が..........ですか? – StephenKing
どのようにトリガーしますか?いくつかのコードを共有できますか? – hakamairi