【发布时间】:2023-01-31 00:39:01
【问题描述】:
我在 Github Actions 中有一个带有 workflow_dispatch 事件触发器的工作流。我希望以 json 格式输入字符串。工作流的 yml 看起来像这样:
name: Json parse test
on:
workflow_dispatch:
inputs:
parameters_json:
type: string
required: true
jobs:
build_and_deploy:
name: Json parse test
runs-on: ubuntu-latest
steps:
- name: Parse json input
id: json
run: |
echo ${{ fromJson(github.event.inputs.parameters_json).targetPlatform }}
我想通过带有 curl 的请求来触发这个工作流,就像它描述的那样 here
当我通过 Github 的网页手动运行工作流程时,它运行良好。
我的问题是当我尝试通过 curl 请求触发工作流时
curl -X POST -H "Accept: application/vnd.github+json" -H "Authorization: Bearer <my token>" -H "X-GitHub-Api-Version: 2022-11-28" https://api.github.com/repos/\<owner >/<my repo>/actions/workflows/json_parse_test.yml/dispatches -d '{"ref":"dev","inputs":{"parameters_json":"{"targetPlatform":"asd","param" :45}"}}'
它抛出以下错误并且工作流不运行
{ "message": "Problems parsing JSON", "documentation_url": "https://docs.github.com/rest/reference/actions#create-a-workflow-dispatch-event" }如果我传递一个普通字符串(没有 json 格式,例如“something”)作为输入,工作流将按预期触发,即 curl 代码没有问题。
所以,我的问题是:是否有任何语法可以发送 json 格式的字符串输入来解决这个解析问题?
提前致谢。
【问题讨论】:
-
您是否尝试转义嵌套的 JSON?示例:jqplay.org/s/2XujtIp-ySN
-
我强烈建议为此使用 GitHub CLI;
gh workflow run允许您传递参数并帮助转义。 -
@Azeem 非常感谢,解决了我的问题。我会将其添加为答案。
-
@Miguel:不客气!当然。此外,正如上面在 cmet 中提到的,您可能希望更频繁地使用 GitHub CLI。它在这些情况下非常方便。
-
@本杰明W。是的,GitHub CLI 也能正常工作,但我将其用作其他用户将使用的工具的一部分。这将需要他们安装 GitHub CLI,而我正在努力避免。也谢谢你。
标签: json curl github-actions