我正在添加一個 Github 操作作業流來執行 terraform 命令作為管道的一部分。
terraform 代碼指的是來自另一個 repo 的 terraform 模塊,如下所示。
module <moduleName> {
source = "git::[email protected]:<orgName>/<moduleRepo>.git//<modulePath>?ref=<moduleTag>"
...
}
這將導致在terraform init命令執行期間從給定標簽中獲取代碼。
確保使用 https url 而不是 SSH git url。我正在覆寫 git config url,如下所示。
git config --global url."https://oauth2:[email protected]/<orgName>/<moduleRepo>.git".insteadOf "ssh://[email protected]/<orgName>/<moduleRepo>.git"
但是 GITHUB_TOKEN 不允許 git clone 并且失敗并出現以下錯誤:
remote: Invalid username or password.
fatal: Authentication failed for
'https://github.com/<repoName>/<moduleRepo>.git/'
我還嘗試為存盤庫的作業流添加權限,如下所示:
permissions:
repository-projects: read
操作的 repo 設定設定為:Allow all actions and reusable workflows
如果我使用具有repo權限的 PAT 更改 GITHUB_TOKEN,則作業流程可以正常作業。
請讓我知道如何使用所需權限配置 GITHUT_TOKEN。我想讓它與 GITHUB_TOKEN 而不是 PAT 一起作業。
uj5u.com熱心網友回復:
最終我能夠弄清楚這個問題。GITHUB_TOKEN 作為機密而不是環境變數提供給 Github Action 作業流。
問題是我將它視為環境變數并以此方式使用它,這導致了錯誤。
我將作業流程更改如下,以將其用作秘密。
jobs:
<jobName>:
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
我按如下方式更新了 git 配置以正確使用令牌:
git config --global url."https://oauth2:[email protected]/<orgName>/<moduleRepo>.git".insteadOf "ssh://[email protected]/<orgName>/<moduleRepo>.git"
作業流程現在似乎可以正常作業。
用法記錄在這里:https ://docs.github.com/en/rest/guides/getting-started-with-the-rest-api#authentication-example-for-github-actions
在此處添加我的答案以幫助其他面臨類似問題的人。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507631.html
