我们希望使用 Jenkins 来生成特定项目里程碑的发布/部署。将标签推送到 Git 存储库时是否可以触发 Jenkins 流水线(在 Jenkinsfile 或 Groovy 脚本中定义)?
我们托管私有 Gitlab 服务器,因此 Github 解决方案不适用于我们的案例。
我们希望使用 Jenkins 来生成特定项目里程碑的发布/部署。将标签推送到 Git 存储库时是否可以触发 Jenkins 流水线(在 Jenkinsfile 或 Groovy 脚本中定义)?
我们托管私有 Gitlab 服务器,因此 Github 解决方案不适用于我们的案例。
这是目前管道/多分支工作流程中非常缺乏的东西。在这里查看一张票: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)
}
这两者都可能需要一些方法白名单才能正常工作。
如果您使用多分支管道,则有一个发现标签。使用那个加上斯宾塞的解决方案
我有同样的愿望并推出了我自己的,也许不漂亮,但它奏效了......
在您的管道作业中,标记“此项目已参数化”并为您的标签添加一个参数。然后在管道脚本中检查标签是否存在。
创建一个运行脚本的自由式作业: