如何在Git提交上触发Jenkins管道

Let*_*ind 6 jenkins jenkins-groovy jenkins-pipeline

我正在为.Net Core应用程序设置Jenkins管道。

如果我在多分支管道配置中配置结帐SCM,则Jenkins多分支管道构建会在Git提交时触发。但是,如果我在Jenkins Declarative Pipeline脚本中显式签出SCM,则多分支管道构建不会在git commit上触发。

有什么办法解决这个问题?

以下是我在脚本中使用的checkout命令:

checkout([$class: 'GitSCM', branches: [], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout'], [$class: 'PruneStaleBranch']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'credential-id', url: 'my/git/ssh/url']]])
Run Code Online (Sandbox Code Playgroud)

Mar*_*tek 7

要在新的 git commit 上触发构建,您应该首先在您的管道脚本中通过添加适当的triggers指令来启用 SCM 轮询Jenkinsfile

triggers {
  pollSCM 'H/2 * * * *'
}
Run Code Online (Sandbox Code Playgroud)

这将每两分钟轮询您的 SCM 是否有任何更改。如果自上次构建以来检测到更改,您的作业将被触发以构建更改。

投票是获得您想要的东西的最简单方法。但是,您应该考虑使用 post-commit hook 而不是polling。使用轮询Jenkins 必须定期检查 SCM 的更改。在 post-commit hook 的情况下,如有必要,SCM 将通知 Jenkins 有关更改。它比轮询更受欢迎,因为它会减少所需的请求数量和从 Jenkins 到 SCM 存储库的流量。

配置 post-commit hook 后,triggers应通过提供空字符串作为 cron 参数来修改指令以pollSCM触发。

triggers {
  pollSCM ''
}
Run Code Online (Sandbox Code Playgroud)

这可能会令人困惑,但需要此空字符串才能启用由作业处理的提交后挂钩请求。Jenkins 文档也没有很好地记录它。