web-dev-qa-db-ja.com

コード変更がGitHubにプッシュされたときにJenkinsマルチブランチパイプラインをトリガーする方法

GitHubリポジトリ用にJenkinsジョブ(multibranch pipeline)をセットアップしています。そのGitリポジトリに変更がプッシュされるたびに、そのジョブを自動的にトリガーしたいと思います。 Jenkinsfileを使用してこれを実現するにはどうすればよいですか?

Poll SCMなどのJenkinsジョブでの構成変更を避けたい。マルチブランチパイプラインの場合、Build whenever a change is pushed to GitHubなどのオプションはありません。

9
s4ik4t

GitHubからのイベントに「反応する」ジョブの場合、ジョブビルドトリガーを「PollSCM」に設定しますが、説明されているように、スケジュールを指定しないでくださいnot on このStackoverflowの回答

宣言型Jenkinsfileの場合、これは次のことを意味します。

pipeline {
  triggers {
    pollSCM('') // Enabling being build on Push
  }
  ...
}

さらなる読み物:

5
Markus Schulte

(私が知っている)これまでで最も簡単なオプションは、定義されたリポジトリに新しいコミットがあることをJenkinsGitプラグインにリモートで通知することです。ただし、これによってJenkinsがすぐにジョブを開始することはありません。何が起こるかというと、Gitプラグインが特定のリポジトリの(再)インデックス作成を開始します。変更が検出されると、Jenkinsジョブが開始されます。

リポジトリ(GitHub、GitLabなど)から、次のURLをトリガーする必要があります。

http://my-jenkins-Host/git/[email protected]:group/repository.git&delay=0sec

urlの値は、Jenkinsジョブ(Gitプラグイン)で構成したSCMURLと一致する必要があります。

落とし穴:Jenkinsが not ルートコンテキスト(/)この場合、URLはhttp://my-jenkins-Host/context-path/git/...

1
Marcel Stör

この記述的なパイプラインスクリプトを使用して、新しい変更がgithubにプッシュされるたびにパイプラインを自動構築できます

pipeline{
   agent any     
     triggers {
        githubPush()
      }
   ...
 }

また、関連するシークレットトークンを使用してgithubwebhookを有効にする必要があります。