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

GitHub Actions自托管运行器执行Terraform Init时认证失败

解决方案

1. 修正Git凭据文件的路径与权限

自托管运行器的执行用户可能和预期不同,导致~/.git-credentials路径未正确指向当前用户目录。修改Configure Git Credentials步骤,明确使用$HOME变量并确保文件权限安全:

- name: Configure Git Credentials
  run: |
    mkdir -p $HOME/.git
    git config --global credential.helper store
    echo "https://x-access-token:${{ secrets.GIT_PAT }}@github.com" > $HOME/.git-credentials
    chmod 600 $HOME/.git-credentials
  env:
    GIT_PAT: ${{ secrets.GIT_PAT }}

如果自托管运行器被多个工作流共享,建议改用本地仓库配置避免全局冲突:

- name: Configure Git Credentials
  run: |
    git config credential.helper store
    echo "https://x-access-token:${{ secrets.GIT_PAT }}@github.com" > $HOME/.git-credentials
    chmod 600 $HOME/.git-credentials
  env:
    GIT_PAT: ${{ secrets.GIT_PAT }}

2. 使用Terraform专属环境变量认证

无需修改Git配置,直接在工作流的env块中添加Terraform专用的模块下载令牌,Terraform会自动用此令牌拉取私有模块:

env:
  # 保留原有环境变量
  TF_MODULE_DOWNLOAD_TOKEN: ${{ secrets.GIT_PAT }}

添加后可直接移除Configure Git Credentials步骤。

3. 升级自托管运行器的Git版本

旧版本Git可能不兼容credential.helper store特性,以Ubuntu为例执行升级:

sudo apt update && sudo apt install git -y

验证版本:git --version,确保使用2.28及以上版本。

4. 清理自托管运行器上的残留凭据

如果运行器之前存储过其他Git凭据,可能导致认证冲突,执行以下命令清理:

git config --global --unset credential.helper
rm -f $HOME/.git-credentials

5. 验证PAT权限与有效期

确认你的PAT拥有repo权限(用于访问私有仓库),且未过期。可在GitHub个人设置的"开发者设置"中检查PAT的权限范围和有效期。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 12:27:21