gpt4 book ai didi

azure - 获取从另一个管道下载的最后一个工件的值

转载 作者:行者123 更新时间:2023-12-03 05:32:32 24 4
gpt4 key购买 nike

我创建一个任务来从另一个管道下载最新的工件,并依次识别该文件以通过命令行进行静默安装。

 - 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 的初学者,我无法理解管道的工作原理。

最佳答案

恐怕没有现成的变量可以代表最新下载的工件。

但是您可以在管道中创建一个变量来获取工件名称。

根据我的测试,当您使用下载管道工件任务时,管道将生成一个环境变量:$(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

For the latest installer name

您可以对该值进行硬编码。从.msi文件的名称来看,它似乎与管道的变量没有关系,所以我不确定是否可以创建一个变量来表示它。

关于azure - 获取从另一个管道下载的最后一个工件的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64455764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com