Azure DevOps Pipeline制品如何发布至Artifacts页面并指定SemVer版本
Azure DevOps Pipeline制品发布问题解答
1. 让制品显示在Artifacts页面
你当前用的publish步骤生成的是Pipeline Artifacts,这类制品和具体的构建/发布运行绑定,只会出现在对应管道的运行详情里,不会显示在Azure Artifacts主页面(这个页面展示的是Feed中的包,比如通用包、NuGet等)。要让制品出现在Artifacts页面,你需要把它发布到Azure Artifacts Feed中,推荐用通用包(Universal Package)来实现:
操作步骤:
- 先在Azure DevOps的Artifacts模块里创建一个Feed(如果还没有的话)。
- 修改Pipeline配置,替换原来的
publish步骤为UniversalPackages任务:
steps: - script: ./something.sh displayName: build # 替换原publish步骤为通用包发布任务 - task: UniversalPackages@0 displayName: Publish to Azure Artifacts Feed inputs: command: 'publish' # 你的构建产物目录 publishDirectory: '$(System.DefaultWorkingDirectory)/app/build' # 格式:项目名称/Feed名称,比如 'MyDevOpsProject/MyPackageFeed' vstsFeedPublish: '你的项目/你的Feed' # 包名称,和你之前的MyPackage对应 vstsFeedPackagePublish: 'MyPackage' # 版本选项选custom,方便指定SemVer versionOption: 'custom' # 示例版本号,后面讲动态生成SemVer versionPublish: '1.0.0'
发布完成后,你就能在Azure Artifacts页面的对应Feed里找到这个包了。
2. 指定SemVer版本号
上面的通用包发布任务支持直接使用SemVer格式的版本号,你可以通过两种方式灵活设置:
方式一:用预定义变量快速生成
直接在versionPublish里填写符合SemVer规范的版本,或者结合Azure DevOps预定义变量动态生成:
versionPublish: '1.0.$(Build.BuildId)'
这样每次构建都会生成1.0.xxx格式的版本,其中xxx是自动递增的构建ID。
方式二:脚本动态生成版本(更灵活)
如果需要基于Git标签、分支名等生成版本,可以先通过脚本提取或计算版本号,存入变量后再传给发布任务:
steps: - script: ./something.sh displayName: build # 脚本从Git标签提取SemVer版本(假设标签格式为v1.0.0) - script: | TAG=$(git describe --tags --abbrev=0) VERSION=${TAG#v} # 去掉前缀v,得到纯版本号1.0.0 echo "##vso[task.setvariable variable=PackageVersion]$VERSION" displayName: Generate SemVer Version # 使用生成的版本号发布 - task: UniversalPackages@0 displayName: Publish to Azure Artifacts Feed inputs: command: 'publish' publishDirectory: '$(System.DefaultWorkingDirectory)/app/build' vstsFeedPublish: '你的项目/你的Feed' vstsFeedPackagePublish: 'MyPackage' versionOption: 'custom' versionPublish: '$(PackageVersion)'
注意事项:
- 确保管道的服务账号(比如Project Collection Build Service)拥有对应Feed的发布权限,否则会发布失败。
- SemVer版本号要符合规范,不能包含空格、@等特殊字符。
内容的提问来源于stack exchange,提问作者ashic
相关产品推荐
相关产品推荐

