【问题标题】:How to avoid job triggers when pushing inside job?推内部工作时如何避免工作触发?
【发布时间】:2021-04-14 13:44:34
【问题描述】:
我有 Jenkins Pipeline 工作,它使用带有令牌的 Generic Webhook Trigger。在我拥有的管道脚本内部:
sh '''
git add .
git commit -m "Update..." || true
git push origin main
'''
如何防止工作触发器从管道内推送?目前我总是有双重触发。
【问题讨论】:
标签:
jenkins
github
jenkins-pipeline
【解决方案1】:
我相信有两种选择:
- 您禁用了 webhook
- 使用 when 条件
我认为你不想做第一个,所以对于第二个,有when 条件。
// lines skipped for brevity
stage('myStage') {
when {
triggeredBy cause: 'UserIdCause'
}
steps {
sh '''
git add .
git commit -m "Update..." || true
git push origin main
'''
}
}
这只会在用户按下Build 按钮时运行。但是,如果您想通过 webhook 事件运行 Job 并且仍然有更改存储库的步骤(从而导致另一个更改、另一个 webhook 事件等),您可能可以使用来自管道的特定消息提交像Jenkins automated commit,然后在第二个 webhook 事件中,检查提交消息(假设这是可能的,IDK)并且如果它是自动的,则不要运行该步骤。
我希望第一个解决方案对您有所帮助,因为它更优雅且易于操作。在我的流水线中,我只让 Jenkins 推送到我的 GitHub 存储库,当我正在做一个发布或其他事情时。不是在通常的构建上。