184

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

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

また、ローカル ブランチのダウンストリーム ビルドをトリガーしても意味がないため、ブランチ名が master の場合にのみこれを実行したいと考えています。

アップデート:

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

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

some-downstream-job-name という名前のパラメーター化されたジョブが見つかりません

このジョブはジェンキンスに存在し、現在のものと同じ組織フォルダーの下にあると確信しています。独自の を持つ別のジョブですJenkinsfile

この質問は、GitHub 組織から各リポジトリおよびブランチのジョブを自動作成および維持するGitHub 組織プラグインに固有のものであることに注意してください。

4

5 に答える 5

162

まず、buildステップを でラップするのは executor スロットの無駄ですnode。アップストリームのエグゼキュータは、理由もなくアイドル状態になります。

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

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

したがって、あなたが書くつもりだったのはおそらく

if (env.BRANCH_NAME == 'master') {
    build '../other-repo/master'
}
于 2016-03-31T11:23:15.860 に答える
158

上記の回答に加えて、単純なパラメーターを 2 番目のパイプラインに渡してジョブを開始したかったのですが、http://web.archive.org/web/20160209062101/https://dzone.com/で回答を見つけました。 refcardz/継続的な配信とジェンキンスのワークフロー

だから私は使用しました:

stage ('Starting ART job') {
    build job: 'RunArtInTest', parameters: [[$class: 'StringParameterValue', name: 'systemname', value: systemname]]
}
于 2016-09-23T08:40:23.360 に答える
27

パイプラインのコマンドbuildは、ジェンキンスで他のジョブをトリガーするためにあります。

github の例

ジョブは Jenkins に存在する必要があり、パラメーター化できます。ブランチに関しては、gitから読めると思います

于 2016-03-30T11:23:12.633 に答える