GitHubリポジトリ用にJenkinsジョブ(multibranch pipeline
)をセットアップしています。そのGitリポジトリに変更がプッシュされるたびに、そのジョブを自動的にトリガーしたいと思います。 Jenkinsfile
を使用してこれを実現するにはどうすればよいですか?
Poll SCM
などのJenkinsジョブでの構成変更を避けたい。マルチブランチパイプラインの場合、Build whenever a change is pushed to GitHub
などのオプションはありません。
GitHubからのイベントに「反応する」ジョブの場合、ジョブビルドトリガーを「PollSCM」に設定しますが、説明されているように、スケジュールを指定しないでくださいnot on このStackoverflowの回答 。
宣言型Jenkinsfileの場合、これは次のことを意味します。
pipeline {
triggers {
pollSCM('') // Enabling being build on Push
}
...
}
さらなる読み物:
(私が知っている)これまでで最も簡単なオプションは、定義されたリポジトリに新しいコミットがあることを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/...
この記述的なパイプラインスクリプトを使用して、新しい変更がgithubにプッシュされるたびにパイプラインを自動構築できます
pipeline{
agent any
triggers {
githubPush()
}
...
}
また、関連するシークレットトークンを使用してgithubwebhookを有効にする必要があります。