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

使用gh api设置组织Actions权限时,如何正确传递数组字段?

问题:调用GitHub API时如何正确传递数组类型的patterns_allowed字段?

我尝试调用gh api --method PUT orgs/<ORG>/actions/permissions/selected-actions接口,这个接口接收3个字段,其中一个是patterns_allowed。试了好几种传参方式,一直收到以下错误:

{
"message": "Invalid request.\n\nFor 'properties/patterns_allowed', "..." is not an array.",
"documentation_url": "https://docs.github.com/rest/reference/actions#set-allowed-actions-for-an-organization"
}

其中一次尝试的代码如下:

ALLOWED="foo,bar"
gh api --method PUT \
    orgs/${{github.repository_owner}}/actions/permissions/selected-actions \
    --field "github_owned_allowed=true" \
    --field "verified_allowed=false" \
    --field "patterns_allowed=[$ALLOWED]"

请问正确传递数组类型字段的方式是什么?


正确传参方式

GitHub CLI的gh api命令传递数组类型字段有两种常用方法:

方法1:多次使用--field指定数组元素

把数组的每个元素单独用--field传递,字段名后加[]标识数组项:

gh api --method PUT \
    orgs/${{github.repository_owner}}/actions/permissions/selected-actions \
    --field "github_owned_allowed=true" \
    --field "verified_allowed=false" \
    --field "patterns_allowed[]=foo" \
    --field "patterns_allowed[]=bar"

方法2:传递合法JSON格式的数组字符串

如果要通过变量传递数组,需构造标准JSON数组字符串,直接赋值给字段:

ALLOWED='["foo", "bar"]'
gh api --method PUT \
    orgs/${{github.repository_owner}}/actions/permissions/selected-actions \
    --field "github_owned_allowed=true" \
    --field "verified_allowed=false" \
    --field "patterns_allowed=$ALLOWED"

也可以通过Here-string传递完整的JSON请求体:

gh api --method PUT \
    orgs/${{github.repository_owner}}/actions/permissions/selected-actions \
    --input - << EOF
{
  "github_owned_allowed": true,
  "verified_allowed": false,
  "patterns_allowed": ["foo", "bar"]
}
EOF

你之前的错误原因是直接拼接[$ALLOWED]生成的是[foo,bar],这不是合法的JSON数组(元素未加引号),导致GitHub API无法识别为数组类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:37:03