将json数据获取到azure管道

问题描述 投票:0回答:1
jobs:
  # Set an output variable from job A
  - job: A
    steps:
    - powershell: |
        $image_infor=Invoke-WebRequest https://raw.githubusercontent.com/Sitecore/docker-images/master/tags/sitecore-tags.json ###json data
        Write-Host $image_infor
        Write-Host "##vso[task.setvariable variable=myOutput_currentDate;isoutput=true]$image_infor"
      name: setvarStep
    
  # Map the variable into job B
  - job: B
    dependsOn: A
    variables:
      myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutput_currentDate'] ]  
    steps:
    - powershell: |
          Write-Host $myVarFromJobA.Name

这是我一直面临的问题。变量 $image_infor 的内容不会传递给第二个作业。它显示为空白,没有错误。因此,当我查看作业 A 的日志时,我实际上可以看到 $image_infor 的值,但它没有到达作业 B 。 请提供任何帮助。

期望在作业 B 中看到 json 值

json variables azure-pipelines invoke-webrequest
1个回答
0
投票

有几点需要注意。

  1. setVariable 应该传递 string 数据类型。(但你的是一个对象)
  2. isoutput
    应该是
    isOutput
  3. $myVarFromJobA.Name
    应该是
    $(myVarFromJobA)
  4. 管道代理的内存是有限的,所以你的setVariable大小不能太大。你这里的 json 数据太大了。

我编写了一个具有很小 json 数据大小的示例。

jobs:
# Set an output variable from job A
- job: A
  steps:
  - powershell: |
      $image_infor = Invoke-WebRequest https://raw.githubusercontent.com/Azure/azure-quickstart-templates/a743b015cc57a8a98d92e9c2743e52715d020258/demos/backup-la-reporting/prereqs/prereq.azuredeploy.json ###json data

      Write-Host "sample input is: $image_infor"

      $iamge_info_string = $image_infor.Content | ConvertTo-Json -Depth 5

      Write-Host "sample input is: $iamge_info_string"
      Write-Host "##vso[task.setvariable variable=myOutput_currentDate;isOutput=true]$iamge_info_string"
    name: setvarStep
  
# Map the variable into job B
- job: B
  dependsOn: A
  variables:
    myVarFromJobA: $[ dependencies.A.outputs['setvarStep.myOutput_currentDate'] ]
  steps:
  - powershell: |
      Write-Host "sample result is: $(myVarFromJobA)"

© www.soinside.com 2019 - 2024. All rights reserved.