使用copy_file_to_another_repo_action时API_TOKEN_GITHUB认证失败
解决GitHub工作流推送时的认证失败问题
针对你使用copy_file_to_another_repo_action推送文件到目标仓库时出现的Invalid username or password认证失败问题,以下是你可能遗漏的排查点:
1. 确认令牌在工作流中的传递方式
copy_file_to_another_repo_action需要将令牌通过with:字段的api_token参数显式传入,而非仅依赖环境变量。如果你的工作流仅通过env:声明API_TOKEN_GITHUB,但未在with中传递,会导致认证失败。正确调用格式示例:
- uses: dmnemec/copy_file_to_another_repo_action@main with: source_file: "path/to/your/file" destination_repo: "rempsyc/starter-academic" destination_branch: "master" api_token: ${{ secrets.API_TOKEN_GITHUB }}
2. 验证令牌权限的细节
- 经典令牌:必须勾选
repo完整仓库读写权限,确保覆盖目标仓库的操作权限。 - 细粒度令牌:
- 确认目标仓库的
Contents权限设置为Read and write; - 检查令牌的有效期是否未过期;
- 确保令牌绑定的仓库列表包含目标仓库
rempsyc/starter-academic,避免因权限范围限制未覆盖到。
- 确认目标仓库的
3. 检查工作流的Git基础配置
部分情况下,action内部的Git用户信息未正确初始化会导致认证异常。可在调用action前添加手动配置步骤:
- name: Configure Git User run: | git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub绑定邮箱"
4. 排查目标仓库的分支保护规则
如果目标仓库的master分支开启了分支保护(如要求PR合并、必须通过状态检查等),即使令牌有权限,直接推送也会被拦截。可暂时关闭分支保护进行测试,或调整令牌权限(经典管理员令牌可绕过部分保护,细粒度令牌需额外配置“绕过分支保护”权限)。
5. 确认密钥存储位置与引用正确性
- 确保
API_TOKEN_GITHUB密钥存储在源仓库(rempsyc/cv)的Secrets中,而非目标仓库; - 检查密钥名称的拼写(大小写、下划线)与工作流中的引用完全一致,避免因拼写错误导致无法读取密钥。
内容的提问来源于stack exchange,提问作者rempsyc
相关产品推荐
相关产品推荐

