Curl在Postman正常但Git Action触发Workflow Dispatch报Bad Request
解决方案
问题排查与修复步骤
1. 校验Token权限与存储方式
- 确保用于授权的Personal Access Token(PAT)拥有workflow权限(私有仓库需额外添加
repo权限),且未过期、未被撤销。 - 禁止在代码中硬编码Token,改用GitHub仓库密钥存储:在仓库A的「Settings → Secrets and variables → Actions」中添加密钥(如
TRIGGER_WORKFLOW_TOKEN),然后在curl命令中替换为${{ secrets.TRIGGER_WORKFLOW_TOKEN }},示例:-H "Authorization: token ${{ secrets.TRIGGER_WORKFLOW_TOKEN }}"
2. 修正curl命令格式问题
- 检查命令中的特殊字符:你的yaml里curl行末尾的反斜杠
\、Token字段、JSON参数中可能存在全角空格,bash会将其识别为无效字符,导致请求格式错误。重新手动输入命令,确保所有符号为半角,示例:curl https://api.github.com/repos/project/admin/actions/workflows/56876875/dispatches \ -H "Accept: application/vnd.github.v3+json" \ -H "Content-Type: application/json" \ -H "Authorization: token ${{ secrets.TRIGGER_WORKFLOW_TOKEN }}" \ -d '{"ref": "sharon_trunk_cicd", "inputs": {}}'
3. 验证分支与工作流配置
- 确认仓库B中存在
sharon_trunk_cicd分支,分支名称大小写敏感,无拼写错误;若为保护分支,需确保Token拥有该分支的操作权限。 - 检查仓库B的目标工作流是否已启用
workflow_dispatch触发器,配置示例:on: workflow_dispatch: inputs: {} # 需与请求中的inputs结构匹配
4. 核对工作流ID有效性
- 通过访问
https://api.github.com/repos/project/admin/actions/workflows接口,获取仓库B的所有工作流ID,确认56876875与目标工作流ID完全匹配。
5. 添加调试信息定位问题
- 在curl命令中加入
-v参数,查看详细请求与响应日志,精准定位错误原因:curl -v https://api.github.com/repos/project/admin/actions/workflows/56876875/dispatches \ -H "Accept: application/vnd.github.v3+json" \ -H "Content-Type: application/json" \ -H "Authorization: token ${{ secrets.TRIGGER_WORKFLOW_TOKEN }}" \ -d '{"ref": "sharon_trunk_cicd", "inputs": {}}'
内容的提问来源于stack exchange,提问作者Sharon Manisha
相关产品推荐
相关产品推荐

