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

如何在VSTS中使用Git标签或package.json版本作为发布名称

没问题!我帮你梳理下怎么把Azure DevOps(原VSTS)的发布名称改成和应用版本绑定的格式,不管是从package.json读取还是用Git标签,都能搞定,分两种场景给你详细说:

方案一:从package.json提取应用版本

这种适合你的版本号维护在package.json里的情况:

  • 第一步:在构建定义中添加版本提取任务
    打开你的CI构建定义,在构建流程的早期阶段(比如代码拉取后、测试/打包前)添加一个PowerShell任务(如果是Linux代理就用Bash任务),用来读取package.json的version字段并设置为构建输出变量:
    PowerShell脚本示例:

    # 假设package.json在代码根目录,路径不对的话自行调整
    $packageJsonContent = Get-Content -Path "./package.json" -Raw | ConvertFrom-Json
    # 设置名为AppVersion的构建变量,isOutput=true确保能传递到发布环节
    Write-Host "##vso[task.setvariable variable=AppVersion;isOutput=true]$($packageJsonContent.version)"
    

    保存构建定义,先手动跑一次构建验证这个任务是否成功输出了AppVersion变量(可以在构建日志里搜索这个关键词)。

  • 第二步:修改发布定义的名称格式
    打开你的自动发布定义,切换到「选项」标签页,找到「发布名称格式」设置项,把默认的$(rev:r)替换成$(Build.AppVersion)。这样每次触发发布时,就会自动使用构建环节提取到的package.json版本号作为发布名称了。

方案二:从Git标签提取版本号

如果你的版本是通过yarn打标签(比如v1.2.3这种格式)维护的,就用这个方案:

  • 第一步:确保构建能拉取Git标签
    先打开构建定义的「获取源代码」步骤,勾选「获取标签」选项,这样构建代理会拉取仓库里的所有标签。

  • 第二步:在构建定义中添加标签提取任务
    同样在构建流程早期添加PowerShell/Bash任务,提取当前构建对应的最新Git标签:
    PowerShell脚本示例(如果标签带v前缀,想去掉的话可以加注释里的替换逻辑):

    # 获取当前提交对应的最新标签
    $latestTag = git describe --tags --abbrev=0
    # 如果标签是v开头(比如v1.2.3),需要去掉v的话取消下面这行注释
    # $latestTag = $latestTag -replace '^v', ''
    # 设置构建变量
    Write-Host "##vso[task.setvariable variable=AppVersion;isOutput=true]$latestTag"
    

    同样先跑一次构建验证变量是否正确输出。

  • 第三步:修改发布定义的名称格式
    和方案一一样,在发布定义的「选项」里把发布名称改成$(Build.AppVersion)即可。

额外注意事项
  • 如果你用的是多阶段构建,需要确保变量在阶段间正确传递(不过单阶段构建直接用$(Build.AppVersion)就没问题);
  • 手动触发发布时,要选择带有正确版本标签/对应package.json版本的构建版本,不然发布名称可能为空或不符合预期;
  • 可以在发布定义的「选项」里给名称格式加额外后缀,比如$(Build.AppVersion)-$(rev:r),这样如果同一个版本需要多次发布,也能区分开。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:53:10