1. ホーム
  2. jenkins

[解決済み] GitHub Org Pluginでjenkins pipeline (jenkinsfile)から別のジョブを起動するには?

2022-04-20 03:52:15

質問

の内部から別のジョブのビルドをトリガーするにはどうすればよいですか? Jenkinsfile ?

このジョブは、同じリポジトリ配下の別のリポジトリと仮定します。 github組織 すでに独自のJenkinsファイルを持っているものです。

また、ローカルブランチの下流ビルドを起動する意味がないので、ブランチ名がmasterの場合のみ、この処理を行いたいと考えています。

更新します。

stage 'test-downstream'
node {
     def job = build job: 'some-downtream-job-name'
}

それでも、実行するとエラーが発生します。

some-downtream-job-name という名前のパラメタライズド・ジョブは見つかりませんでした。

私はこのジョブがjenkinsに存在し、現在のものと同じ組織フォルダの下にあることを確信しています。これは別のジョブで、独自の Jenkinsfile .

に特化した質問であることにご注意ください。 GitHub組織プラグイン GitHub Organization の各リポジトリとブランチに対してジョブを自動作成し、維持します。

解決するには?

まず第一に、このようなラップをすることは、エグゼキュータ・スロットの無駄遣いです。 build のステップを node . 上流のエグゼキュータが意味もなくアイドル状態になってしまうのです。

次に、マルチブランチプロジェクトから、環境変数 BRANCH_NAME を使えば、現在のブランチを条件とするロジックを作ることができます。

第三に job パラメータは、絶対または相対ジョブ名を取ります。パス名を指定しない場合、同じフォルダーにある別のジョブが参照されます。これは、マルチブランチプロジェクトの場合、同じリポジトリの別のブランチを意味します。

したがって、あなたが書こうとしたものは、おそらく

if (env.BRANCH_NAME == 'master') {
    build '../other-repo/master'
}