You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON文件值传入Azure Pipeline并设为全局变量/参数

Azure Pipeline读取JSON文件值并设置全局变量/参数的方案

触发规则配置(按特定文件夹提交触发)

先修改Pipeline的触发规则,只在目标文件夹有提交时触发:

trigger:
  paths:
    include:
      - your-target-folder/**  # 替换为你要监控的文件夹路径
    exclude:
      - '*'

实现方式

方式1:设置为当前Job可用的变量

修改你的Pipeline配置,添加读取JSON并设置变量的步骤:

name: "test"

trigger:
  paths:
    include:
      - your-target-folder/**  # 替换为实际文件夹路径
    exclude:
      - '*'

variables: 
  value1: ''
  value2: ''
  
jobs:
  - job: example_job
    displayName: 'example_job'
    steps:
    - checkout: self

    # 用PowerShell读取JSON并设置变量
    - task: PowerShell@2
      displayName: '读取JSON文件并设置变量'
      inputs:
        targetType: 'inline'
        script: |
          # 读取目标JSON文件
          $jsonContent = Get-Content -Path "$(Build.SourcesDirectory)/your-target-folder/file.json" -Raw | ConvertFrom-Json
          # 将JSON中的值设置为Pipeline变量
          Write-Host "##vso[task.setvariable variable=value1;]$($jsonContent.example.vaule1)"
          Write-Host "##vso[task.setvariable variable=value2;]$($jsonContent.example.vaule2)"

    # 验证变量是否生效
    - script: |
        echo "value1: $(value1)"
        echo "value2: $(value2)"
      displayName: '验证变量值'

方式2:设置为跨Job可用的全局输出变量

如果需要在多个Job中使用这些JSON值,需将变量标记为输出变量,后续Job通过依赖引用:

name: "test"

trigger:
  paths:
    include:
      - your-target-folder/**  # 替换为实际文件夹路径
    exclude:
      - '*'
  
jobs:
  - job: read_json_job
    displayName: '读取JSON文件'
    steps:
    - checkout: self

    - task: PowerShell@2
      displayName: '读取JSON并设置输出变量'
      name: jsonVarSetter  # 给步骤命名,用于后续引用
      inputs:
        targetType: 'inline'
        script: |
          $jsonContent = Get-Content -Path "$(Build.SourcesDirectory)/your-target-folder/file.json" -Raw | ConvertFrom-Json
          # 标记为输出变量,允许跨Job引用
          Write-Host "##vso[task.setvariable variable=value1;isOutput=true;]$($jsonContent.example.vaule1)"
          Write-Host "##vso[task.setvariable variable=value2;isOutput=true;]$($jsonContent.example.vaule2)"

  - job: example_job
    displayName: '使用JSON变量的Job'
    dependsOn: read_json_job
    variables:
      # 引用上一个Job的输出变量
      globalValue1: $[ dependencies.read_json_job.outputs['jsonVarSetter.value1'] ]
      globalValue2: $[ dependencies.read_json_job.outputs['jsonVarSetter.value2'] ]
    steps:
    - script: |
        echo "全局value1: $(globalValue1)"
        echo "全局value2: $(globalValue2)"
      displayName: '使用全局变量'

注意事项

  • 注意JSON文件中的拼写:你的示例中vaule1/vaule2存在拼写错误(正确应为value1/value2),如果实际文件保持此拼写,脚本中需匹配一致,否则无法正确读取。
  • 路径准确性:确保$(Build.SourcesDirectory)/your-target-folder/file.json是文件在仓库中的实际路径,根据你的仓库结构调整。
  • 若使用Bash环境,可通过jq工具读取JSON,示例脚本:
value1=$(jq -r '.example.vaule1' $(Build.SourcesDirectory)/your-target-folder/file.json)
value2=$(jq -r '.example.vaule2' $(Build.SourcesDirectory)/your-target-folder/file.json)
echo "##vso[task.setvariable variable=value1;]$value1"
echo "##vso[task.setvariable variable=value2;]$value2"

内容的提问来源于stack exchange,提问作者Vauler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 05:01:35