如何在Azure DevOps流水线中捕获Jfrog查询结果存入变量
实现方案
你之前操作失败的核心原因是JfrogCli@1任务的command参数仅接收jfrog原生命令,不会调用PowerShell解析管道操作,所以管道后的ConvertFrom-Json等语句不会被执行。可按以下两步配置:
- 先调整JfrogCli任务,将查询结果输出到临时JSON文件
- task: JfrogCli@1 inputs: artifactoryService: connexion_service_id command: 'jfrog rt curl -XGET "/api/search/artifact?name=myApp.zip&repos=myRepo" > search_result.json'
- 新增PowerShell任务解析结果并设置为Pipeline变量
- task: PowerShell@2 name: GetArtifactUri # 自定义任务名,跨任务/跨阶段调用变量需要 inputs: targetType: inline script: | $searchResult = Get-Content ./search_result.json | ConvertFrom-Json # 提取首个匹配结果的uri $artifactUri = $searchResult.results[0].uri # 变量设置为isOutput=true可支持跨阶段调用,不需要可以去掉该参数 Write-Host "##vso[task.setvariable variable=artifactUri;isOutput=true]$artifactUri"
变量使用说明
- 同阶段后续任务直接使用
$(artifactUri)即可获取地址 - 跨阶段调用时需要通过依赖引用,格式为
$[dependencies.上一阶段名.outputs['GetArtifactUri.artifactUri']]
内容的提问来源于stack exchange,提问作者GGO
相关产品推荐
相关产品推荐

