You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins声明式流水线中仅构建Git标签时执行指定步骤

在Jenkins声明式流水线中仅针对Git标签执行特定逻辑

搞定这个需求其实很简单!Jenkins虽然没有像Travis CI那样直接提供tags: true的专属条件,但我们可以利用标签构建时的特性轻松实现等效效果。下面是两种最常用、最靠谱的方案:

方案一:用TAG_NAME环境变量判断(推荐)

当Jenkins构建Git标签时,会自动给我们设置一个叫TAG_NAME的环境变量(值就是标签的名字),而普通分支构建时这个变量是不存在的。我们只需要在when块里检查这个变量是否存在就行:

pipeline {
    agent any
    stages {
        stage('常规构建') {
            steps {
                // 这里放你的日常构建步骤:编译、跑测试啥的
                echo "正在构建项目..."
            }
        }
        stage('发布到生产') {
            // 只有标签构建才会进入这个阶段
            when {
                expression { env.TAG_NAME != null }
            }
            steps {
                // 这里写你的发布逻辑:推镜像、部署集群、发通知等等
                echo "正在发布标签 ${env.TAG_NAME} 到生产环境..."
            }
        }
    }
}

如果想更严谨,只允许符合特定格式的标签触发发布(比如只认v1.0.0这种版本号标签),可以给表达式加个正则匹配:

when {
    expression { env.TAG_NAME != null && env.TAG_NAME ==~ /v\d+\.\d+\.\d+/ }
}

方案二:通过变更日志匹配标签提交(特殊场景用)

如果你的标签提交有特定的日志格式(比如提交信息里带[tag]标识),也可以用changelog条件来匹配,不过这种方法不如第一种直接,适合小众场景:

stage('发布到生产') {
    when {
        changelog '^\\[tag\\]'
    }
    steps {
        echo "通过标签提交触发发布..."
    }
}

小提醒

  • 记得在Jenkins项目的Git配置里,勾选**"Fetch tags"**(在SCM配置的高级选项里),不然Jenkins识别不到标签构建,TAG_NAME变量也不会生成。
  • 如果是手动触发构建,要选择"Tag"选项并输入标签名,这样TAG_NAME才会被正确赋值。

这样就完美实现了你要的效果——只有构建Git标签时,才会执行发布这类特定逻辑。

内容的提问来源于stack exchange,提问作者vossad01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:40:43