15

この質問は、複数のリポジトリを使用した Jenkins ジョブの自動トリガーに関連しています。

Jenkinsfile でチェックアウトする 3 つのリポジトリを定義しました。

 node('slave'){
 git clone github.com/owner/abc.git -b ${env.BRANCH_NAME}
 git clone github.com/owner/def.git -b ${env.BRANCH_NAME}
 git clone github.com/owner/ghi.git -b ${env.BRANCH_NAME}
 }

Github 組織プラグインを使用して構成された Jenkins ジョブ。

この場合、私の Jenkinsfile は abc リポジトリにあり、Jenkins 自動トリガーは abc リポジトリに対して正常に機能しています。他のレポでは機能しません。

2 つ以上のレポの自動トリガーを定義する方法はありますか?

2 つ以上のリポジトリに対してジョブを自動トリガーできるプラグインはありますか?

Jenkinsfile で「checkout scm」を別の方法で定義する必要がありますか?

4

1 に答える 1

9

はい、Pipeline script from SCMパイプライン ジョブのオプションを使用して、複数のリポジトリを指定 (ボタンをAdd Repositoryクリック) することで、3 つのリポジトリの同じブランチを監視できると仮定して、これを行うことができます。

ここに画像の説明を入力

この構成 (そしてもちろんPoll SCMオプションが有効化されている) では、3 つのリポジトリのいずれかに変更が加えられるたびにビルドがトリガーされます。

このソリューションに関するいくつかのヒント:

  1. 各リポジトリに必要ですJenkinsfile
  2. 2 つのプロジェクト間で複数のプロジェクトをコミットした場合SCM polls、結果は予測できません (コミットした 2 つのプロジェクトのいずれかが最終的にビルドされる可能性があります)
  3. 前の点を解決し、コードの重複を回避するには、おそらく次のような汎用スクリプトを各 Jenkinsfile からロードする必要があります。

abc/def/ghi の Jenkinsfile:

node {
    // --- Load the generic pipeline ---
    checkout scm: [$class: 'GitSCM', branches: [[name: '*/master']], extensions: [], submoduleCfg: [], userRemoteConfigs: [[url: 'http://github/owner/pipeline-repo.git']]]
    load 'common-pipeline.groovy'
}()

common-pipeline.groovy脚本:

{ ->
    node() {
       git clone github.com/owner/abc.git
       git clone github.com/owner/def.git
       git clone github.com/owner/ghi.git            

       // Whatever you do with your 3 repos...
    }
}
于 2016-08-10T14:10:07.650 に答える