Jenkins:如何在git标签上触发管道

时间:2017-05-16 14:14:10

标签: jenkins continuous-integration jenkins-pipeline continuous-deployment jenkins-2

我们希望使用Jenkins在特定项目里程碑上生成版本/部署。当标记被推送到Git存储库时,是否可以触发Jenkins管道(在Jenkinsfile或Groovy脚本中定义)?

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

3 个答案:

答案 0 :(得分:3)

目前这是管道/多分支工作流程中非常缺乏的东西。在此处查看此处的票证: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)
}

这些都可能需要一些方法白名单才能发挥作用。

答案 1 :(得分:0)

我有同样的愿望并自己推动,也许不是很漂亮,但它有效......

在您的管道工作中,标记"此项目已参数化"并为您的标记添加参数。然后在管道脚本中签出标签(如果它存在)。

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

  • 结帐
  • 运行git describe --tags --abbrev = 0以获取最新标记。
  • 根据正在运行的构建列表检查该标记(例如在文件中)。
  • 如果构建尚未发生,则通过将标记作为参数传递的URL(在"构建触发器"设置"触发器远程构建的管道作业中)触发管道作业(例如,来自脚本),它将显示正确的URL。
  • 将标记添加到正在运行的构建列表中,以便它不会再次触发。
  • 经常开展这项工作。

答案 2 :(得分:0)

如果您使用多分支管道,则有一个发现标签。使用那个 plus Spencer 解决方案