Azure Pipeline中Azure CLI命令执行过慢问题排查与优化
Azure DevOps Pipeline 跨流水线下载工件的问题与解决
我是Azure DevOps(ADO)Pipeline的新手,目前遇到这样的场景:手里只有生成工件的某次流水线运行的build ID,需要在另一条流水线中下载该工件。根据官方文档,使用DownloadPipelineArtifact@2任务时必须同时提供pipeline和buildId参数。
最初的实现方案(存在性能瓶颈)
因为只有buildId,我计划通过az命令查询对应的流水线ID,具体步骤如下:
- task: AzureCLI@2 displayName: lookup pipeline ID inputs: azureSubscription: $(ServicePrincipal) scriptType: bash scriptLocation: inlineScript inlineScript: | pipelineId=$(az pipelines runs show --id ${{ parameters.buildId }} --query "definition.id") echo build ${{ parameters.buildId }} belongs to pipeline $pipelineId echo "##vso[task.setvariable variable=pipelineId]$pipelineId" env: AZURE_DEVOPS_EXT_PAT: $(System.AccessToken)
这个命令在本地执行耗时不到1秒,但在流水线中运行却需要近1分钟。
优化尝试(未达预期)
- 更新1:根据建议将步骤改为直接使用bash任务(使用Windows托管代理而非自托管代理),但执行速度反而更慢。
意外发现与最终解决方法
- 更新2:修改查询步骤时出现拼写错误,未获取到pipeline ID,但下载任务并未失败,反而成功下载了正确的工件。经测试确认:同一组织内下载工件时,
pipeline参数并非必需,这与官方文档描述不符,属于微软文档过时的情况。因此我移除了查询步骤,流水线运行正常。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

