使用GitHub Actions CLI设置仓库变量RUN_ID遇403权限错误求助
解决GitHub Actions设置仓库变量403权限问题
问题原因
你遇到的HTTP 403: Must have admin rights to Repository错误,核心是默认GITHUB_TOKEN没有修改仓库变量的权限,同时Workflow配置存在几处细节问题需要调整。
具体修复步骤
1. 创建带仓库管理权限的个人访问令牌(PAT)
默认GITHUB_TOKEN即便设置permissions: write-all,也无法修改仓库变量。需生成专用PAT:
- 进入GitHub个人设置→开发者设置→个人访问令牌→生成新令牌
- 勾选
repo全权限(确保拥有仓库变量修改权限) - 将令牌添加到仓库Secrets中,命名为
REPO_ADMIN_PAT
2. 修正Workflow配置
以下是调整后的完整代码,关键修改点已标注:
name: test3 on: workflow_dispatch: inputs: runid: required: false type: number jobs: Test: permissions: contents: write # 保留必要权限即可,无需write-all runs-on: ubuntu-latest environment: TWIST_DEV steps: - uses: actions/checkout@v3 - name: Display the input value run: | echo "${{ inputs.runid }}" # 用inputs引用workflow_dispatch输入参数,而非env - name: Update environment file with 'run_id' value run: | echo "${{ github.run_id }}" > file cat file - name: Change mode to file run: chmod 777 file - name: Inputs runid (workflow call) if: ${{ inputs.runid != '' }} env: GH_TOKEN: ${{ secrets.REPO_ADMIN_PAT }} # 用自定义PAT替代默认GITHUB_TOKEN run: gh variable set RUN_ID < file - name: Set runid variable run: echo "${{ vars.RUN_ID }}" # 变量名与设置的RUN_ID保持大小写一致
3. 关键调整说明
- 权限替换:默认
GITHUB_TOKEN无仓库变量修改权限,必须使用带repo权限的PAT - 参数引用修正:
workflow_dispatch的输入参数需通过inputs.runid获取,而非env.runid - 变量大小写匹配:GitHub变量大小写敏感,读取时需与设置的
RUN_ID完全对应
4. 精简优化建议
可省去文件操作步骤,直接通过管道传递值:
echo "${{ github.run_id }}" | gh variable set RUN_ID
内容的提问来源于stack exchange,提问作者Motti C
相关产品推荐
相关产品推荐

