我正在添加一個Github操作工作流,以執行地形命令作為管道的一部分。
terraform代碼指的是來自另一個repo的terraform模塊,如下所示。
module <moduleName> {
source = "git::git@github.com:<orgName>/<moduleRepo>.git//<modulePath>?ref=<moduleTag>"
...
}
這將導致在terraform init
命令執行期間從給定標記獲取代碼。
確保使用https url而不是SSH git url。我將覆蓋git配置url,如下所示。
git config --global url."https://oauth2:$GITHUB_TOKEN@github.com/<orgName>/<moduleRepo>.git".insteadOf "ssh://git@github.com/<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設置設置為:Allow all actions and reusable workflows
如果我使用repo
權限更改PAT的GITHUB_TOKEN,則工作流將不會出現任何問題。
請讓我知道如何使用所需權限配置GITHUT_TOKEN。我想讓它與GITHUB_TOKEN而不是PAT一起工作。
最終,我找到了問題所在。GITHUB_TOKEN作為秘密而不是環境變量提供給Github Action工作流。
問題是我把它當作一個環境變量來使用,這導致了錯誤。
我更改了工作流程如下,將其作為機密使用。
我更新了git配置如下,以正確使用令牌:
工作流現在似乎工作正常。
The usage is documented here: https://docs.github.com/en/rest/guides/getting-started-with-the-rest-api#authentication-example-for-github-actions
在這里添加我的答案,以幫助其他面臨類似問題的人。