我创建了两个Yaml管道。
当我使用经典发行管道时,可以从CI管道链接已发布的构建工件。
但是,当我使用YAML CD流水线时,我不知道如何链接CI流水线,以便可以从CI构建中提取$(Build.BuildNumber)。到目前为止,这是我尝试过的。
"dependencies": {
"strapi": "3.1.4",
"strapi-admin": "file:packages/strapi-admin",
"strapi-connector-bookshelf": "3.1.4",
"strapi-plugin-content-manager": "3.1.4",
"strapi-plugin-content-type-builder": "3.1.4",
"strapi-plugin-documentation": "3.1.4",
"strapi-plugin-email": "3.1.4",
"strapi-plugin-upload": "3.1.4",
"strapi-plugin-users-permissions": "3.1.4",
"strapi-utils": "3.1.4"
},
,并尝试使用此变量从CI构建中获取BuildNumber。 $(resources.pipeline.test.Build.BuildNumber),但看起来这种语法是错误的。
任何人都可以分享,如果您知道如何使它正常工作?
谢谢您的帮助。
答案 0 :(得分:1)
要从CI管道链接已发布的构建工件,可以使用称为“下载构建工件”的内置任务。
在任务设置中,您可以按照其项目,构建管道和构建版本选择工件,就像在Classic UI发布管道中可以执行的操作一样。
这是任务的示例脚本:
- task: DownloadBuildArtifacts@0
name: {task name}
inputs:
buildType: 'specific'
project: '{project id}'
pipeline: '{pipeline id}'
buildVersionToDownload: 'latest'
downloadType: 'single'
artifactName: '{artifact name}'
downloadPath: '$(System.ArtifactsDirectory)'
该任务具有输出变量BuildNumber
。您可以使用{taskname}.BuildNumber
来获取从中下载工件的内部版本号。
答案 1 :(得分:0)
该信息似乎无法在变量中使用(尚未)。我尝试了这些变量:
- script: |
echo '$(Build.TriggeredBy.BuildNumber)'!
echo '$(Build.TriggeredBy.BuildId)'!
echo '$(Build.TriggeredBy.DefinitionId)'!
echo '$(Build.TriggeredBy.DefinitionName)'!
echo '$(Build.TriggeredBy.ProjectID)'!
echo '$(Build.BuildNumber)'!
echo '$(Build.RequestedFor)'!
echo '$(Build.RequestedForEmail)'!
echo '$(Build.RequestedForId)'!
这就是我得到的:
$(Build.TriggeredBy.BuildNumber)!
$(Build.TriggeredBy.BuildId)!
$(Build.TriggeredBy.DefinitionId)!
$(Build.TriggeredBy.DefinitionName)!
$(Build.TriggeredBy.ProjectID)!
20200901.12!
Microsoft.VisualStudio.Services.TFS!
!
00000002-0000-8888-8000-000000000000!
所以我只为$(Build.BuildNumber)
获得了有意义的价值。
因此,要获取管道触发器的内部版本号,可以使用REST API:
variables:
devopsAccount : 'thecodemanual'
projectName : 'DevOps Manual'
steps:
- pwsh: |
# Get a build info
$uri = "https://dev.azure.com/$(devopsAccount)/$(projectName)/_apis/build/builds/$(Build.BuildId)?api-version=6.0-preview.6&expand=all"
Write-Host $uri
# Invoke the REST call
$result = Invoke-RestMethod -Uri $uri -Method Get -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"}
$buildNumber = $result.triggerInfo.version
Write-Host $buildNumber
echo "##vso[task.setvariable variable=triggeredByBuildNumber]$buildNumber"
- script: |
echo '$(triggeredByBuildNumber)'!
通过这种方法,我检索了20200901.14
,它是构建触发器的正确值。
并且触发器信息具有更多详细信息:
"triggerInfo": {
"artifactType": "Pipeline",
"alias": "test",
"projectId": "4fa6b279-3db9-4cb0-aab8-e06c2ad550b2",
"pipelineTriggerType": "PipelineCompletion",
"source": "kmadof.dm-so-46",
"pipelineId": "3320",
"version": "20200901.14"
},
如果您需要一些。