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

Github Actions中Secret无法传递至工作流问题求助

解决GitHub Actions读取Secrets中PAT触发Repository Dispatch返回"Bad credentials"的问题

问题重现

使用以下GitHub Actions工作流触发目标仓库的repository dispatch:

jobs:
  trigger-repository-dispatch:
  runs-on: ubuntu-latest
  env:
    ACCESS_TOKEN: ${{ secrets.ACCESS_TOKEN }}
    REPOSITORY: ${{ inputs.repository }}
  steps:
    - name: Checkout project
      uses: actions/checkout@v3
    - name: Trigger dependant common project repository dispatch
      run: |
        curl -X POST https://api.github.com/repos/${REPOSITORY}/dispatches \
        -H 'Accept: application/vnd.github.everest-preview+json' \
        -H "Authorization: Bearer ${ACCESS_TOKEN}" \
        --data '{"event_type": "success"}'

当直接在env.ACCESS_TOKEN中写入明文PAT时工作正常,但从仓库Secrets读取ACCESS_TOKEN时,返回错误:

{
  "message": "Bad credentials",
  "documentation_url": "https://docs.github.com/rest"
}

解决思路

  • 验证Secrets的正确性
    确认当前仓库的Secrets中存在ACCESS_TOKEN,且内容是完整、无多余空格/换行的有效PAT。可以临时添加一个步骤(测试后删除)验证读取情况:

    run: echo "Token starts with: ${ACCESS_TOKEN:0:4}"
    

    确保输出的前缀和PAT一致。

  • 检查PAT的权限配置
    确保该PAT拥有足够权限:私有仓库需勾选repo权限,公开仓库至少勾选public_repo权限;同时确认PAT未过期、未被撤销。

  • 优化变量引用方式
    跳过env变量中转,直接在curl命令中引用Secrets,避免可能的变量转义问题:

    -H "Authorization: Bearer ${{ secrets.ACCESS_TOKEN }}"
    
  • 确认仓库访问权限
    如果目标仓库属于组织,需确认PAT的持有者账号对该仓库有写入权限;同时检查PAT是否设置了仓库访问限制,确保目标仓库在允许列表内。

  • 排查curl命令格式
    确认Authorization头的格式正确(Bearer后必须有一个空格),以及--data后的JSON字符串语法无误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:12:47