如何在代码更改推送到 GitHub 时触发 Jenkins 多分支管道

How to trigger a Jenkins multibranch pipeline when code change is pushed to GitHub

我为 GitHub 存储库设置了 Jenkins 作业 (multibranch pipeline)。每当有更改推送到 Git 回购时,我想自动触发该作业。如何使用 Jenkinsfile?

实现此目的

我想避免 Jenkins 作业中的任何配置更改,例如 Poll SCM 等。对于多分支管道,没有 Build whenever a change is pushed to GitHub

这样的选项

对于您的工作 "reacting" 到您 GitHub 的事件,将工作构建触发器设置为 "Poll SCM",但 指定一个时间表,如 this Whosebug answer.

所述

对于声明式 Jenkinsfile,这意味着:

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

进一步阅读:

到目前为止(据我所知)最简单的选择是远程告诉 Jenkins Git 插件有一个已定义存储库的新提交。但是,这不会触发 Jenkins 立即开始工作。发生的事情是 Git 插件开始(重新)索引特定的存储库。如果检测到更改,则会启动 Jenkins 作业。

从您的存储库(GitHub、GitLab 等)您应该触发以下 URL:

http://my-jenkins-host/git/notifyCommit?url=git@gitlab.example.com:group/repository.git&delay=0sec

url 的值必须与您在 Jenkins 作业(Git 插件)中配置的 SCM URL 匹配!

陷阱:您的 Jenkins 可能 部署在根上下文 (/) 下,在这种情况下 URL 将是 http://my-jenkins-host/context-path/git/...

您可以使用此描述性管道脚本在新更改推送到 github

时自动构建您的管道
pipeline{
   agent any     
     triggers {
        githubPush()
      }
   ...
 }

您还应该使用相关的秘密令牌启用 github webhook。