github - Terraform Git Clone 似乎不适用于 GITHUB_TOKEN,但在使用 PAT 时可以使用

标签 github terraform github-actions

我添加了一个 Github 操作工作流程来执行 terraform 命令作为管道的一部分。

terraform 代码引用了另一个存储库中的 terraform 模块,如下所示。

module <moduleName> {
  source                   = "git::<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="4b2c223f0b2c223f233e2965282426" rel="noreferrer noopener nofollow">[email protected]</a>:<orgName>/<moduleRepo>.git//<modulePath>?ref=<moduleTag>" 
  ...
}

这将导致在 terraform init 命令执行期间从给定标签获取代码。

确保使用 https url 而不是 SSH git url。我将覆盖 git 配置 url,如下所示。

git config --global url."https://oauth2:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="83a7c4cad7cbd6c1dcd7ccc8c6cdc3e4eaf7ebf6e1ade0ecee" rel="noreferrer noopener nofollow">[email protected]</a>/<orgName>/<moduleRepo>.git".insteadOf "ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c4a3adb084a3adb0acb1a6eaa7aba9" rel="noreferrer noopener nofollow">[email protected]</a>/<orgName>/<moduleRepo>.git"

但是 GITHUB_TOKEN 不允许 git 克隆,并且失败并出现以下错误:

remote: Invalid username or password.
fatal: Authentication failed for
'https://github.com/<repoName>/<moduleRepo>.git/'

我还尝试向存储库工作流程添加权限,如下所示:

permissions:
  repository-projects: read

操作的存储库设置设置为:允许所有操作和可重用工作流程

如果我使用具有 repo 权限的 PAT 更改 GITHUB_TOKEN,则工作流程可以顺利运行。

请让我知道如何配置 GITHUT_TOKEN 所需的权限。我想让它与 GITHUB_TOKEN 而不是 PAT 一起使用。

最佳答案

最终我能够解决这个问题。 GITHUB_TOKEN 作为 secret 而不是环境变量提供给 Github Action 工作流程。

问题是我将其视为环境变量并照此使用它,这导致了错误。

我按如下方式更改了工作流程以将其用作 secret 。

jobs:
  <jobName>:
      env:
        GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

我按如下方式更新了 git 配置以正确使用 token :

git config --global url."https://oauth2:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="dffb9897808b90949a919fb8b6abb7aabdf1bcb0b2" rel="noreferrer noopener nofollow">[email protected]</a>/<orgName>/<moduleRepo>.git".insteadOf "ssh://<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="c1a6a8b581a6a8b5a9b4a3efa2aeac" rel="noreferrer noopener nofollow">[email protected]</a>/<orgName>/<moduleRepo>.git"

工作流程现在似乎可以正常工作。

此处记录了用法:https://docs.github.com/en/rest/guides/getting-started-with-the-rest-api#authentication-example-for-github-actions

在此处添加我的答案以帮助面临类似问题的其他人。

关于github - Terraform Git Clone 似乎不适用于 GITHUB_TOKEN,但在使用 PAT 时可以使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73684084/

相关文章:

github - GitHub Actions 和 Jenkins 等其他 CI 工具有什么区别?

GitHub 疯狂地搞乱 Markdown - 将 666 更改为 DCLXVI

terraform - 如何在 sagemaker 中自动创建/处理批量作业?

Github CI/CD 管道因 webpack 而崩溃

azure - 使用远程 tfstate 保护存储帐户

azure - 为 Azure Function App (Terraform) 配置 Application Insights

Git diff 给了我一个致命的 : bad revision 'HEAD~1'

javascript - 在另一个存储库中使用该操作时如何访问 GitHub Action 存储库的文件?

带有更新的 Git 工作叉

github/git Checkout 在 Windows 上返回 'error: invalid path'