我multibranch pipeline
为 GitHub 存储库设置了 Jenkins 作业 ( )。每当有更改推送到该 Git 存储库时,我想自动触发该作业。我怎样才能使用 a 来实现这一点Jenkinsfile
?
我想避免 Jenkins 作业中的任何配置更改,例如Poll SCM
等。对于多分支管道,没有这样的选项Build whenever a change is pushed to GitHub
我multibranch pipeline
为 GitHub 存储库设置了 Jenkins 作业 ( )。每当有更改推送到该 Git 存储库时,我想自动触发该作业。我怎样才能使用 a 来实现这一点Jenkinsfile
?
我想避免 Jenkins 作业中的任何配置更改,例如Poll SCM
等。对于多分支管道,没有这样的选项Build whenever a change is pushed to GitHub
对于您的作业“响应”来自 GitHub 的事件,请将作业构建触发器设置为“轮询 SCM”,但不要指定时间表,如此 Stackoverflow 答案中所述。
对于声明性 Jenkinsfile,这意味着:
pipeline {
triggers {
pollSCM('') // Enabling being build on Push
}
...
}
进一步阅读:
每当将新更改推送到 github 时,您都可以使用此描述性管道脚本来自动构建管道
pipeline{
agent any
triggers {
githubPush()
}
...
}
此外,您应该使用相关的秘密令牌启用 github webhook。
到目前为止(我知道)最简单的选择是远程告诉 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/...