Azure Pipelines通用包publishedPackageVar实现同版本部署方案咨询
解决方案
你可以直接使用Azure Pipelines内置的split表达式处理publishedPackageVar的输出,不需要额外添加脚本任务做字符串提取,全程配置简洁不影响流水线可读性,该方案已经在大量带审批的多阶段生产流水线中稳定落地。
核心配置步骤
1. 构建阶段配置
给Universal Package上传任务添加自定义名称和publishedPackageVar参数,同时在阶段输出中直接拆分得到版本号:
stages: - stage: Build jobs: - job: BuildJob steps: # 其余构建步骤省略 - task: UniversalPackages@0 name: uploadUPack # 必须给任务命名,后续才能引用输出变量 inputs: command: publish publishDirectory: '$(Build.ArtifactStagingDirectory)' vstsFeedPublish: '<你的制品源标识>' vstsFeedPackagePublish: '<你的包名称>' versionOption: 'patch' publishedPackageVar: UPLOADED_PKG # 上传结果会存入该变量,格式为「包名 版本号」 # 声明要传递到后续阶段的输出变量,直接拆分得到纯版本号 outputs: - pkgVersion: $[ split(dependencies.BuildJob.outputs['uploadUPack.UPLOADED_PKG'], ' ')[1] ]
2. 部署阶段配置
直接引用构建阶段输出的版本号变量即可,完全匹配对应构建上传的包版本,不会受其他流水线运行上传的新版本影响:
- stage: Deploy dependsOn: Build # 你的审批流程配置可放在该阶段的environment或触发规则中 jobs: - job: DeployJob variables: # 引用构建阶段输出的版本号 PKG_VERSION: $[ stageDependencies.Build.BuildJob.outputs['pkgVersion'] ] steps: # 其余部署前置步骤省略 - task: UniversalPackages@0 inputs: command: download vstsFeed: '<你的制品源标识>' vstsFeedPackage: '<你的包名称>' vstsPackageVersion: $(PKG_VERSION) downloadDirectory: '$(System.ArtifactsDirectory)'
简化场景(同Job内上传下载)
如果你的上传、下载逻辑在同一个流水线Job内,不需要跨阶段传递,配置可以进一步简化,直接在下载任务中拆分变量即可:
steps: - task: UniversalPackages@0 name: uploadUPack inputs: command: publish # 其余上传参数省略 publishedPackageVar: UPLOADED_PKG - task: UniversalPackages@0 inputs: command: download vstsPackageVersion: $[ split(variables['UPLOADED_PKG'], ' ')[1] ] # 其余下载参数省略
内容的提问来源于stack exchange,提问作者amilovanovikj
相关产品推荐
相关产品推荐

