如果发布新标记,jenkins会触发构建

时间:2015-04-20 08:34:40

标签: git jenkins tags

我想配置jenkins,以便在git存储库的任何分支中发布新标记时开始构建。如何配置此行为?

我是jenkins的新手,请原谅我,如果这可能是一个非常基本的问题,但我无法在自己身上找到答案。

git jenkins config

触发: build trigger

感谢您的帮助

7 个答案:

答案 0 :(得分:24)

将refspec设置为: +refs/tags/*:refs/remotes/origin/tags/*

分支说明符: **

在构建触发器下,检查将更改推送到GitHub时的构建

答案 1 :(得分:17)

新标签是什么意思?它有一些模板名称吗?

您肯定可以在高级 - >中定义它 Refspec - > refs/tags/{tagname}

您甚至可以refs/tags/*查找任何新标签。

enter image description here

答案 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.

https://jenkins.io/blog/2018/04/09/whats-in-declarative/

答案 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 ...