繁体   English   中英

jenkins 发布新标签时触发构建

[英]jenkins trigger build if new tag is released

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

git 詹金斯配置

触发:构建触发器

谢谢你的帮助

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

分支说明符: **

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

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

您当然可以在Advanced --> Refspec --> refs/tags/{tagname}定义它。

您甚至可以使用refs/tags/*来查找真正的任何新标签。

在此处输入图片说明

请注意,如果 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

以前对我不起作用。 在我的情况下,单引号中的 refspec 工作:

Refspec : '+refs/tags/*':'refs/remotes/origin/tags/*'分支说明符:**/tags/**

我有詹金斯 2.120。 要使由标签触发的作业工作需要执行以下步骤:

  1. 创建工作:

    Refspec : '+refs/tags/*':'refs/remotes/origin/tags/*'

    分支说明符:**/tags/**

  2. 运行构建

  3. 将相同的作业重新配置为参数:

    Refspec : '+refs/tags/*':'refs/remotes/origin/tags/*'

    分支说明符:**

  4. 运行构建

  5. 将相同的作业重新配置为参数:

    Refspec : '+refs/tags/*':'refs/remotes/origin/tags/*'分支说明符:**/tags/**

  6. 运行构建

只有在这个神奇的步骤之后,当我标记分支时,它才会自动触发 Jenkins

他们发布了一个新的“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/

结合@albertski 和@Sergey 的答案对我有用。

路径: Jenkins > {YourJob} > Configure > Pipeline > Definition (Pipeline script from SCM) > SCM (Git)

选项:

存储库>高级... > Refspec +refs/tags/v*:refs/remotes/origin/tags/v*

要构建的分支>分支说明符(“任何”为空) **/tags/v*

如果希望构建标签以 v 开头,请设置 v*,例如 v0.1.0、v1.0.5...

@albertski 回答有效,但不要忘记以下附加设置: 1. 从 Bitbucket 到 Jenkins 的设置挂钩 2. 需要检查轮询 SCM

您可以通过从您的 bitbucket 存储库中的提交添加新的 git 标签来测试触发器。

我真的坚持这一点,因为我勾选了“删除工作区”,但是构建需要一个现有的工作区来进行比较。 所以我做了以下事情:

  1. 将 refspec 设置为'+refs/tags/*':'refs/remotes/origin/tags/*'
  2. 将分支说明符设置为refs/tags/{A SPECIFIC TAG}
  3. 确保未选中“构建开始前删除工作区”
  4. 运行构建以创建初始工作区
  5. 将分支说明符设置为refs/tags/**
  6. 确保轮询您的 Git 服务被勾选
  7. 在 Git 服务上设置 webhook(例如 Github)
  8. 在 Git 服务中新建一个标签来触发 webhook

现在应该可以了。 您需要注意的日志中的消息是Multiple candidate revisions这意味着当 Git 从远程获取然后应用分支说明符时,有多个匹配项,因此它只选择列表中的第一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM