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

在PowerShell中将JSON键值对转为Windows环境变量(GitHub Actions场景)

从JSON提取键值对并设置为GitHub Actions环境变量(Windows)

核心需求实现方案

你已经完成了JSON文件的读取与解析,接下来只需遍历解析后的JSON对象,将每个键值对导出为GitHub Actions环境变量即可。以下是完整的修正代码及说明:

完整YAML代码片段

name: Check Build Properties JSON Var File
id: read-json
shell: pwsh
run: |
  # 简化JSON文件路径查找
  $jsonfilePath = (Get-ChildItem -Path "${{ github.workspace }}\buildtools" -Recurse -Filter "buildproperties.json").FullName
  Write-Host "JSON文件路径: $jsonfilePath"

  # 读取并解析JSON(修复单引号格式问题)
  $jsonContent = Get-Content -Path $jsonfilePath -Raw
  # 注意:你的JSON中SemVer使用了单引号,不符合标准JSON规范,这里先替换为双引号避免解析失败
  $jsonContent = $jsonContent -Replace "'", '"'
  $JsonParameters = ConvertFrom-Json -InputObject $jsonContent

  # 遍历键值对,导出为GitHub Actions环境变量
  foreach ($prop in $JsonParameters.PSObject.Properties) {
    $varName = $prop.Name
    $varValue = $prop.Value
    # 写入GITHUB_ENV,后续步骤可直接通过${{ env.变量名 }}访问
    Write-Output "$varName=$varValue" >> $env:GITHUB_ENV
    Write-Host "已设置环境变量: $varName=$varValue"
  }

后续步骤使用示例

在同一个Job的后续步骤中,你可以直接调用这些环境变量:

- name: 验证环境变量
  shell: pwsh
  run: |
    Write-Host "UPACK工具路径: ${{ env.UPACKPATH }}"
    Write-Host "NuGet工具路径: ${{ env.NUGETPATH }}"
    Write-Host "版本号: ${{ env.SemVer }}"
    Write-Host "是否打包Portal: ${{ env.PackagePortal }}"

关键注意事项

  1. JSON格式修正:你提供的JSON中SemVer值使用了单引号,这不符合标准JSON规范,会导致ConvertFrom-Json解析失败。代码中加入了单引号替换逻辑,建议你直接修改JSON文件,将所有字符串统一用双引号包裹。
  2. 环境变量作用域:通过$env:GITHUB_ENV设置的环境变量仅在当前Job的后续步骤中生效,跨Job需要使用outputs传递。
  3. 特殊值处理:布尔值(如PackagePortal: false)会被转为字符串False存储,使用时注意类型判断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:13:10