如何在github工作流中安全地将json输出写入文件?

unhi4e5o  于 2023-01-27  发布在  Git
关注(0)|答案(1)|浏览(144)

我有一个github工作流,它获取我的repo中所有Github版本的信息,然后使用jq处理JSON响应。问题是我的shell代码不能处理JSON数据中的单引号(有时确实有)。我如何安全地将steps.release.outputs.data输出到一个文件,而shell不会解释引号和其他字符?

- name: Get Release Info
  uses: octokit/request-action@v2.x
  id: release
  env:
    GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  with:
    route: GET /repos/{org_repo}/releases/tags/{tag}

- name: Get Information from Release
  run: |
    echo '${{ steps.release.outputs.data }}' > release.json
    jq -r '.assets[].browser_download_url' release.json > assets.txt
    jq -r '.body' release.json > changelog.txt

上面失败的部分是第二步中包含echo的行,因为steps.release.outputs.data内容中包含单引号,所以将其断开。
请注意,我只将JSON数据写入文件(上例中为release.json),以尝试绕过shell处理数据中的特殊字符。如果有更好的方法可以做到这一点,而不写入文件,我会更喜欢这样做。使这一点更具挑战性的部分是,响应JSON作为文字字符串而不是bash变量放置到最终的shell脚本中。

col17t5w

col17t5w1#

您可以使用环境变量:

- name: Get Information from Release
  env:
    DATA: ${{ steps.release.outputs.data }}
  run: |
    jq -r '.assets[].browser_download_url' <<<"$DATA" > assets.txt
    jq -r '.body' <<<"$DATA" > changelog.txt

相关问题