首页 文章

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

提问于
浏览
3

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

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

2 回答

  • 3

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

    如果您不反对使用发布分支而不是标记,您可能会发现它更容易 . 例如,如果您决定将所有以 release- 开头的分支视为"release branches",那么您可以...

    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)
    }
    

    这两者可能需要一些方法白名单才能起作用 .

  • 0

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

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

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

    • 结帐

    • 运行git describe --tags --abbrev = 0以获取最新标记 .

    • 根据正在运行的构建列表(如文件中)检查该标记 .

    • 如果未发生构建,则通过将标记作为参数传递的URL触发管道作业(在"Build Triggers"下的管道作业中设置“远程构建触发器(例如,从脚本),它将显示正确的URL .

    • 将标记添加到正在运行的构建列表中,以便不再触发它 .

    • 经常运行此作业 .

相关问题