Azure devops 从触发的管道生成获取触发管道的提交id
我有一个管道A,它在开发分支上成功构建后触发管道B。我想使用下面的命令获取在开发分支上运行的管道A构建的提交ID,但它没有给我确切的IDAzure devops 从触发的管道生成获取触发管道的提交id,azure-devops,Azure Devops,我有一个管道A,它在开发分支上成功构建后触发管道B。我想使用下面的命令获取在开发分支上运行的管道A构建的提交ID,但它没有给我确切的ID - bash: | COMMAND="$(echo '$(build.sourceversion)' | cut -c-7)" echo "##vso[task.setvariable variable=dockertag]$COMMAND" displayNam
- bash: |
COMMAND="$(echo '$(build.sourceversion)' | cut -c-7)"
echo "##vso[task.setvariable variable=dockertag]$COMMAND"
displayName: GetCommitID
如果我遗漏了什么,你能建议一下吗。提前感谢。根据我的测试,虽然管道B是由管道A触发的,但管道A不能直接将提交id传递给管道B 因此变量
build.sourceversion
将不会显示正确的提交ID
要解决此问题,可以在管道a中添加powershell任务以运行Rest Api
以下是一个例子:
在管道B中设置一个变量
管道A:
......
steps:
.....
- powershell: |
$token = "PAT"
$url="https://dev.azure.com/{OrganizationName}/{ProjectName}/_apis/build/definitions/{PipelineBDefinitionId}?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
$response.variables.test.value = "$(Build.SourceVersion)"
echo $response.variables.test.value
$updateurl = "https://dev.azure.com/{OrganizationName}/{ProjectName}/_apis/build/definitions/{PipelineBDefinitionId}?api-version=6.0"
$json = @($response) | ConvertTo-Json -Depth 99
$updatedef = Invoke-RestMethod -Uri $updateurl -Method Put -Body $json -ContentType "application/json" -Headers @{Authorization = "Basic $token"}
displayName: 'PowerShell Script'
管道B:$(测试)
可以显示完整的提交id
steps:
- powershell: |
$COMMAND="$(echo '$(test)' | cut -c-7)"
echo "##vso[task.setvariable variable=dockertag]$COMMAND"
displayName: 'PowerShell Script'
- powershell: 'echo $(dockertag)'
displayName: 'PowerShell Script'
结果:
如果使用管道资源作为触发器,还可以直接引用提交id。请参阅文档:
resources.pipeline..projectName
资源.管道..项目
resources.pipeline..pipelineName
resources.pipeline..pipelineID
resources.pipeline..runName
resources.pipeline..runID
resources.pipeline..runURI
resources.pipeline..sourceBranch
resources.pipeline..sourceCommit
resources.pipeline..sourceProvider
resources.pipeline..requestedFor
resources.pipeline..requestedForID
这有意义吗?Hi@ramesh reddy。这张票有更新吗?如果答案能给你一些帮助,请随时告诉我。只是提醒一下。谢谢。它起作用了
resources.pipeline.<Alias>.projectName
resources.pipeline.<Alias>.projectID
resources.pipeline.<Alias>.pipelineName
resources.pipeline.<Alias>.pipelineID
resources.pipeline.<Alias>.runName
resources.pipeline.<Alias>.runID
resources.pipeline.<Alias>.runURI
resources.pipeline.<Alias>.sourceBranch
resources.pipeline.<Alias>.sourceCommit
resources.pipeline.<Alias>.sourceProvider
resources.pipeline.<Alias>.requestedFor
resources.pipeline.<Alias>.requestedForID