5

我们希望使用 Jenkins 来生成特定项目里程碑的发布/部署。将标签推送到 Git 存储库时是否可以触发 Jenkins 流水线(在 Jenkinsfile 或 Groovy 脚本中定义)?

我们托管私有 Gitlab 服务器,因此 Github 解决方案不适用于我们的案例。

4

3 回答 3

5

这是目前管道/多分支工作流程中非常缺乏的东西。在这里查看一张票:https ://issues.jenkins-ci.org/browse/JENKINS-34395

如果您不反对使用发布分支而不是标签,您可能会发现这样做更容易。例如,如果您决定将所有以开头的分支release-视为“发布分支”,则可以...

if( env.BRANCH_NAME.startsWith("release-") ) {
 // groovy code on release goes here
}

而如果你需要使用后面的名字release-,比如release-10.1变成10.1,只需像这样创建一个变量......

if( env.BRANCH_NAME.startsWith("release-") ) {
 def releaseName = env.BRANCH_NAME.drop(8)
}

这两者都可能需要一些方法白名单才能正常工作。

于 2017-05-18T21:00:46.163 回答
0

如果您使用多分支管道,则有一个发现标签。使用那个加上斯宾塞的解决方案

于 2021-03-26T05:43:57.900 回答
0

我有同样的愿望并推出了我自己的,也许不漂亮,但它奏效了......

在您的管道作业中,标记“此项目已参数化”并为您的标签添加一个参数。然后在管道脚本中检查标签是否存在。

创建一个运行脚本的自由式作业:

  • 查看
  • 运行 git describe --tags --abbrev=0 以获取最新标签。
  • 根据正在运行的构建列表检查该标记(如在文件中)。
  • 如果构建尚未发生,请通过将您的标签作为参数传递的 url 触发管道作业(在“构建触发器”下的管道作业中设置“触发器远程构建(例如从脚本),它将显示正确的 url。
  • 将标签添加到正在运行的构建列表中,这样它就不会再次被触发。
  • 经常运行此作业。
于 2017-05-19T16:15:35.237 回答