パイプラインAとパイプラインBとします。pipeline-Bでpipeline-Aを起動したい。どうすればいいですか?
(pipeline-Aはpipeline-Bのサブセットです。パイプラインAはパイプラインBのサブセットです。)
私のマシンにJenkins 2.41をインストールしました。
別のパイプライン・スクリプトを呼び出すのか、ジョブを呼び出すのかが少し不明なので、両方お答えします:
**パイプラインスクリプト quot;load"ステップは、もう一方のパイプラインスクリプトを実行します。両方のスクリプトが同じディレクトリにある場合は、次のようにロードします:
def pipelineA = load "pipeline_A.groovy" pipelineA.someMethod()
もう一方のスクリプト(pipeline_a.groovy):
def someMethod() { //do something } return this
パイプラインジョブ
別のパイプライン・ジョブの実行について話している場合、 quot;ビルドジョブ"ステップで実行できます:
build job: '', propagate: true, wait: true
プロパゲートします:エラーを伝播する
wait: 完了を待つ
ジョブにパラメータがある場合は、このように追加することができる:
build job: '', parameters: [[$class: 'StringParameterValue', name: 'param1', value: 'test_param']]
以下の解決策が私には有効だ:
pipeline { agent { node { label 'master' customWorkspace "${env.JobPath}" } } stages { stage('Start') { steps { sh 'ls' } } stage ('Invoke_pipeline') { steps { build job: 'pipeline1', parameters: [ string(name: 'param1', value: "value1") ] } } stage('End') { steps { sh 'ls' } } } }
matias-snellingenが言ったことを補足します。 複数の関数がある場合、return thisはメインのパイプラインスクリプトで呼び出される関数の下に記述します。例えば、:
return this
def someMethod() { helperMethod1() helperMethod2() } return this def helperMethod1(){ //do stuff } def helperMethod2(){ //do stuff }
someMethod()`はメインパイプラインスクリプトで呼び出される関数です。
別のオプションは、パッケージを作成し、それをロードして、パッケージから実行することです。
package name.of.package import groovy.json.* def myFunc(var1) { return result }
それを消費するよりも。
@Library('name_of_repo') import name.of.package.* utils = new name_of_pipeline() // here you can invoke utils.myFunc(var)
それが役立つことを願っています。
@Matias Snellingenと@ Cé line Aussourdで述べたように、マルチブランチジョブを開始する場合は、次のように構築するブランチを指定する必要があります。
stage ('Invoke_pipeline') { steps { build job: 'pipeline1/master', parameters: [ string(name: 'param1', value: "value1") ] } }
私の場合、それは問題を解決しました。
別のパイプライン・スクリプトを呼び出すのか、ジョブを呼び出すのかが少し不明なので、両方お答えします:
**パイプラインスクリプト quot;load"ステップは、もう一方のパイプラインスクリプトを実行します。両方のスクリプトが同じディレクトリにある場合は、次のようにロードします:
もう一方のスクリプト(pipeline_a.groovy):
パイプラインジョブ
別のパイプライン・ジョブの実行について話している場合、 quot;ビルドジョブ"ステップで実行できます:
プロパゲートします:エラーを伝播する
wait: 完了を待つ
ジョブにパラメータがある場合は、このように追加することができる:
以下の解決策が私には有効だ:
matias-snellingenが言ったことを補足します。 複数の関数がある場合、
return this
はメインのパイプラインスクリプトで呼び出される関数の下に記述します。例えば、:someMethod()`はメインパイプラインスクリプトで呼び出される関数です。
別のオプションは、パッケージを作成し、それをロードして、パッケージから実行することです。
それを消費するよりも。
それが役立つことを願っています。
@Matias Snellingenと@ Cé line Aussourdで述べたように、マルチブランチジョブを開始する場合は、次のように構築するブランチを指定する必要があります。
私の場合、それは問題を解決しました。