如何在Git提交时触发Jenkins Pipeline

6
我正在为我的 .Net Core 应用程序设置 Jenkins 流水线。
如果我在多分支流水线配置中配置检出 SCM,则 Git 提交会触发 Jenkins 多分支流水线构建。但是,如果我在 Jenkins 声明式流水线脚本中显式检出 SCM,则多分支流水线构建不会在 git 提交时触发。
有没有办法解决这个问题?
以下是我在脚本中使用的检出命令:
checkout([$class: 'GitSCM', branches: [], doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout'], [$class: 'PruneStaleBranch']], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'credential-id', url: 'my/git/ssh/url']]])
1个回答

7
为了在新的git提交时触发构建,您应该首先在您的管道脚本中添加正确的 triggers指令,启用SCM轮询。这样可以在Jenkinsfile中实现。
triggers {
  pollSCM 'H/2 * * * *'
}

这将每隔两分钟轮询您的SCM以查找任何更改。如果自上次构建以来检测到更改,则会触发您的作业以构建这些更改。
轮询是获得所需结果的最简单方法。但是,您应该考虑使用后提交挂钩而不是polling。使用polling,Jenkins必须定期检查SCM的更改。在后提交挂钩的情况下,如果需要,SCM将通知Jenkins有关更改的信息。它比polling更受欢迎,因为它将减轻Jenkins向SCM存储库发送的请求和流量的数量。
配置后提交挂钩后,triggers指令应通过将空字符串提供为cron参数来修改pollSCM触发器。
triggers {
  pollSCM ''
}

这可能有些令人困惑,但这个空字符串是必需的,以便使提交后钩子请求能够被作业处理。在Jenkins文档中也没有很好地记录它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接