azure - 获取从另一个管道下载的最后一个工件的值
问题描述
我创建了一个任务来从另一个管道下载最新的工件,并依次识别文件以通过命令行进行静默安装。
- task: DownloadPipelineArtifact@2
inputs:
source: 'specific'
project: 'TestApp'
pipeline: 'TestApp'
runVersion: 'latest'
branchName: 'refs/heads/master'
allowPartiallySucceededBuilds: true
patterns: '**/*.msi'
downloadPath: $(Build.ArtifactStagingDirectory)
- task: CmdLine@2
inputs:
script: |
cd $(Build.ArtifactStagingDirectory)/TestApp-20201015.2
TestApp.1-setup.msi /s /v
是否存在存储从管道生成的最后一个工件的名称的变量?像这样:
- task: CmdLine@2
inputs:
script: |
cd $(Build.ArtifactStagingDirectory)/$(latestArtifact)
$(latestInstaller).msi /s /v
我尝试使用 $(Build.DefinitionName) 或 TestApp-$(Build.BuildNumber),但它不起作用。我现在道歉,因为我是 Azure 的初学者,我无法理解管道的工作原理。
解决方案
恐怕没有开箱即用的变量可以代表最新下载的工件。
但是您可以在管道中创建一个变量来获取 Artifacts 名称。
根据我的测试,当你使用 . 时Download Pipeline Artifacts task
,管道会生成一个环境变量:$(DOWNLOADPIPELINEARTIFACT.BUILDNUMBER)
.
然后您可以使用 Powershell 运行 Rest API 来获取工件名称。
这是我的示例:
steps:
- powershell: |
$token = "PAT"
$url=" https://dev.azure.com/{Organization Name}/{Project Name}/_apis/build/builds/$(DOWNLOADPIPELINEARTIFACT.BUILDNUMBER)/artifacts?api-version=6.0"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Basic $token"} -Method Get -ContentType application/json
$latestvalue = $response.value.name
echo $latestvalue
echo "##vso[task.setvariable variable=latest]$latestvalue"
displayName: 'PowerShell Script'
然后你可以创建一个变量名:$(latest)
. 它的值是最新工件的名称(例如TestApp-20201015.2
)。
您可以在下一个任务中使用该变量。
cd $(Build.ArtifactStagingDirectory)/$(latest)
TestApp.1-setup.msi /s /v
对于最新的安装程序名称
您可以硬编码此值。从.msi文件的名字看,似乎和管道的变量没有关系,所以不确定是否可以创建一个变量来表示。
推荐阅读
- python - 如何使用python将通用或任何json解析为csv
- c++ - 如何在 Visual C++ 中编写没有条件逻辑的星形模式?给菜鸟的
- javascript - 为什么事件不触发(jquery)
- json - 在 PostgreSQL 上使用 JSON 运算符的不明确列引用
- python-3.x - Python 速记 if 或
- vb.net - 如何在 VB.NET 中使用 LINQ 从 XML 中检索数据?
- javascript - 循环 HTML 中的等待时间
- ajax - Laravel 删除上一个会话
- nancy - Nancy 不在视图上呈现模型数据 (VB.NET)
- python - Python:从一个数据框中获取值并添加到另一个(行和列条件)