如何在Azure DevOps发布管道中推送关联标签并展示版本号
在Azure DevOps发布管道中传递Git标签版本号到服务器应用
给你几个实用的方案,都是新手能快速上手的:
方案1:写入版本文件并随应用部署
这是最直接的方式,在发布管道里新增任务获取标签,写入文件后和应用一起传到服务器:
- 在发布管道中添加PowerShell或Bash任务(根据服务器系统选择),放在「复制文件到服务器」任务之前。
- 用脚本获取当前发布关联的提交对应的Git标签:
PowerShell脚本示例:
Bash脚本示例:# 获取发布关联的提交ID(Azure DevOps预定义变量) $commitId = "$(Build.SourceVersion)" # 拉取所有Git标签(如果管道默认没拉取) git fetch --tags # 查询该提交对应的标签名 $tagName = git describe --tags $commitId # 将标签写入版本文件,存到构建产物目录 echo $tagName > $(Build.ArtifactStagingDirectory)/version.txtcommitId=$(Build.SourceVersion) git fetch --tags tagName=$(git describe --tags $commitId) echo $tagName > $(Build.ArtifactStagingDirectory)/version.txt - 确保后续的「复制文件」任务包含这个
version.txt,部署后应用直接读取该文件展示版本号即可。
方案2:通过环境变量传递版本号
如果你的应用支持读取环境变量,可以不用生成文件,直接把标签号注入服务器环境:
- 同样用PowerShell/Bash任务获取标签名,然后设置管道变量:
PowerShell里添加:Write-Host "##vso[task.setvariable variable=AppVersion;]$tagName" - 在部署服务器的任务中,把变量写入服务器环境:
- Windows服务器:添加PowerShell任务执行
setx AppVersion "$(AppVersion)" - Linux服务器:添加Bash任务执行
echo 'export AppVersion=$(AppVersion)' >> /etc/profile
- Windows服务器:添加PowerShell任务执行
- 应用启动时读取
AppVersion环境变量展示版本。
方案3:构建阶段嵌入版本号(更推荐)
如果你的应用是可编译的,建议在构建管道就把标签号嵌入应用,避免发布阶段额外操作:
- 在构建管道的「获取源代码」任务中,确保勾选「获取标签」(或执行
git fetch --tags)。 - 添加替换任务,比如用「文件替换」任务,把应用配置文件(如
appsettings.json)里的版本占位符(比如"Version": "{TAG_VERSION}")替换为获取到的标签名。 - 构建完成后,产物里的配置文件已经包含正确版本号,发布时直接部署即可。
注意事项
- 确保管道有Git命令执行权限,并且仓库克隆时拉取了标签(默认可能只拉取分支,所以需要加
git fetch --tags)。 - 如果一个提交对应多个标签,
git describe --tags会返回最新的那个,若需要指定逻辑可以调整脚本。
内容的提问来源于stack exchange,提问作者Rok Bohinc
相关产品推荐
相关产品推荐

