如果将新标签推送到远程存储库,我想触发jenkins构建。我看到过很多帖子,但似乎没有一个对我有用。当我在其中推送具有新提交的标签时,构建成功触发,但是如果在旧提交中推送新标签,则不会触发构建。
我已经在Jenkins中使用git插件配置了它,并将Refscpec值添加为+refs/tags/*:refs/remotes/origin/tags/*
,并将分支指定符添加为*/tags/*
现在,如果我跑步:
git push origin master
git tag release-beta
git push origin release-beta
git tag release-prod
git push origin release-prod
已成功触发代码发布beta版的构建,但未成功触发发布prod。
这意味着jenkins始终在寻找提交ID,如果有一个与标签链接的新提交ID,它将构建作业。
我想将我的代码合并到master分支,将其标记为“ release-beta”并部署到beta管道。 Beta测试完成后,我想将相同的代码标记为“ release-prod”,并从相同的jenkins作业中部署生产管道。
答案 0 :(得分:0)
https://github.com/jenkinsci/generic-webhook-trigger-plugin可能值得一看,因为它应该允许您仅通过过滤ref
(例如^(refs/tags/.+)$
)来触发标记的构建:
{
"before": "1848f1236ae15769e6b31e9c4477d8150b018453",
"after": "5cab18338eaa83240ab86c7b775a9b27b51ef11d",
"ref": "refs/heads/develop"
}
这将涉及从您的存储库管理器创建一个Webhook触发器到http:// $ YOUR_JENKINS_HOME_URL / jenkins / generic-webhook-trigger / invoke?token = abc123 并且当然假设您的存储库管理器首先支持Webhooks。
不幸的是,关于通过git-plugin提供的本机支持,这目前是一个未解决的问题:https://issues.jenkins-ci.org/browse/JENKINS-14917
还有一个相应的SO问题,它具有更多细节和吸引力:Trigger a Jenkins pipeline by tagging an existing commit