我想配置jenkins,以便在git存储库的任何分支中发布新标记时开始构建。如何配置此行为?
我是jenkins的新手,请原谅我,如果这可能是一个非常基本的问题,但我无法在自己身上找到答案。
触发:
感谢您的帮助
答案 0 :(得分:24)
将refspec设置为: +refs/tags/*:refs/remotes/origin/tags/*
分支说明符: **
在构建触发器下,检查将更改推送到GitHub时的构建
答案 1 :(得分:17)
新标签是什么意思?它有一些模板名称吗?
您肯定可以在高级 - >中定义它 Refspec - > refs/tags/{tagname}
。
您甚至可以refs/tags/*
查找任何新标签。
答案 2 :(得分:7)
请注意the answer provided by stanjer中的方法如果指向之前构建的提交,则不会使Jenkins触发对新标记的构建。例如,您标记发行版v1.0.0(以使jenkins部署此版本),然后在未来您必须回滚到v1.0.0,再次标记其提交,但是使用v1.0.0-rollback,Jenkins将不会部署您的回滚,因为它将检查标记指向的哈希值,而不是标记本身的哈希值。
总之,jenkins只会在指向尚未标记的提交时构建新标记,而且目前无法进行调整。
如果可以将Jenkins用作处理部署和回滚标签的CD工具,那将是非常棒的。
此处有更多信息https://groups.google.com/forum/#!msg/jenkinsci-users/mYxtDNMz1ZI/xbX9-xM9BQAJ
答案 3 :(得分:0)
上一个不适用于我。就我而言,refspec用单引号引起来:
Refspec :“ + refs / tags / *”:“ refs / remotes / origin / tags / *” 分支说明符:** /标签/ **
更新: 我有詹金斯2.120。要使工作由标签触发,需要执行以下步骤:
1)通过以下方式创建工作
Refspec :“ + refs / tags / *”:“ refs / remotes / origin / tags / *” 分支说明符:** /标签/ **
2)运行构建
3)将同一作业重新配置为参数:
Refspec :“ + refs / tags / *”:“ refs / remotes / origin / tags / *” 分支说明符:**
4)运行构建
5)将同一作业重新配置为参数:
Refspec :“ + refs / tags / *”:“ refs / remotes / origin / tags / *” 分支说明符:** /标签/ **
6)运行构建
只有执行了这一魔术步骤之后,当我标记分支时,它才会自动触发Jenkins
答案 4 :(得分:0)
@albertski答案有效,但请不要忘记以下附加设置: 1.从Bitbucket到Jenkins的安装钩子 2.轮询SCM需要检查
您可以通过从Bitbucket存储库中的提交添加新的git标签来测试触发器。
答案 5 :(得分:0)
他们发布了一个新的“ buildingTag”,可以在when块中使用。
buildingTag - A simple condition that just checks if the Pipeline is running against a tag in SCM, rather than a branch or a specific commit reference.
答案 6 :(得分:0)
@albertski和@Sergey的组合答案对我有用。
路径: Jenkins > {YourJob} > 配置> 管道> 定义(来自SCM的管道脚本)> SCM (Git)
选项:
存储库> 高级... > Refspec +refs/tags/v*:refs/remotes/origin/tags/v*
要构建的分支> 分支说明符(“ any”为空白) **/tags/v*
如果要构建以v开头的标记,请设置v *,例如v0.1.0,v1.0.5 ...