我正在为我的.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']]])
答案 0 :(得分:0)
要在新的git commit上触发构建,您应该首先在管道脚本中通过向Jenkinsfile
添加适当的triggers
指令来启用SCM轮询:
triggers {
pollSCM 'H/2 * * * *'
}
这将每两分钟对SCM进行一次轮询。如果自上次构建以来检测到更改,则将触发您的作业以构建更改。
轮询是获得所需内容的最简单方法。但是,您应该考虑使用提交后挂钩而不是polling。詹金斯必须使用polling定期检查SCM的更改。在提交后挂钩的情况下,如有必要,SCM将通知詹金斯有关更改的信息。与polling相比,它更受青睐,因为它将减少所需的请求数量以及从Jenkins到SCM存储库的流量。
配置提交后挂钩后,应通过向triggers
触发器提供空字符串作为cron参数来修改pollSCM
指令。
triggers {
pollSCM ''
}
这可能会造成混淆,但是需要使用此空字符串才能使作业处理提交后的挂钩请求。詹金斯(Jenkins)的文档对此也没有很好的记录。