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

Github Action:如何使用仓库密钥编辑JSON对象

解决GitHub Action中替换JSON空值未生效的问题

问题原因

你的工作流存在两个关键问题:

  1. jq命令中'test.json'前缺少空格,导致jq无法正确识别输入文件,命令实际未处理目标JSON。
  2. 直接在jq表达式中嵌入${{ secrets.PRIVATE_KEY }}会触发shell转义冲突,且若密钥含特殊字符(如引号、反斜杠)会直接导致jq语法错误,无法完成赋值。

修正后的工作流

使用jq的--arg参数安全传递密钥值,同时通过临时文件避免直接写入原文件可能引发的IO问题:

steps:
  - name: Edit Json
    shell: bash
    run: |
      # 用--arg传递密钥,避免转义问题
      jq --arg secret "${{ secrets.PRIVATE_KEY }}" '.secret = $secret' test.json > temp.json
      # 替换原文件
      mv temp.json test.json
  - name: Display updated file
    run: cat test.json

额外说明

如果你的PRIVATE_KEY是多行内容(如SSH密钥),需要先对其进行JSON字符串转义,避免破坏JSON格式:

steps:
  - name: Edit Json
    shell: bash
    run: |
      # 对多行密钥进行JSON转义后传递
      escaped_secret=$(echo "${{ secrets.PRIVATE_KEY }}" | jq -sR .)
      jq --argjson secret "$escaped_secret" '.secret = $secret' test.json > temp.json
      mv temp.json test.json

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:19