Azure DevOps Universal Packages 从外部源下载制品后如何获取实际版本号
解决方案
推荐方案:使用任务内置输出变量
UniversalPackages@0任务自带了下载版本的输出变量,无需额外解析日志,只需要给你的下载任务添加name属性即可引用:
- task: UniversalPackages@0 name: UniversalDownloadTask # 新增任务名称,用于引用输出变量 displayName: 'Universal download' inputs: feedsToUse: external externalFeedCredentials: '${{ parameters.externalFeedCredentials }}' feedDownloadExternal: 'temp-feed' packageDownloadExternal: 'temp-artifact' downloadDirectory: '$(Pipeline.Workspace)/drop' versionDownloadExternal: '*'
后续同作业内的步骤可以直接通过$(UniversalDownloadTask.packageDownloadVersion)获取实际下载的版本号;如果需要跨阶段引用,使用表达式$[stageDependencies.<阶段名称>.outputs['<作业名称>.UniversalDownloadTask.packageDownloadVersion']]即可。
备选方案:手动读取包元数据
如果因为环境原因无法使用内置变量,可以直接读取下载完成后生成的包配置文件获取版本号,在下载任务后新增一个PowerShell步骤即可:
# 读取.upack目录下的包元数据文件 $packageMetaPath = Join-Path $(Pipeline.Workspace)/drop ".upack/package.json" $packageMeta = Get-Content $packageMetaPath -Raw | ConvertFrom-Json # 将版本号设置为流水线全局变量 Write-Host "##vso[task.setvariable variable=DownloadedPackageVersion]$($packageMeta.Version)"
执行完该步骤后,后续所有步骤都可以通过$(DownloadedPackageVersion)引用实际下载的版本号。
内容的提问来源于stack exchange,提问作者lorandd
相关产品推荐
相关产品推荐

