如何通过GitHub Actions认证多个Google Cloud账户?
在GitHub Actions中连接多个Google Cloud账户的实现方法
有两种可行的方式实现多Google Cloud账户的连接,具体如下:
方案一:在同一个Job中切换多账户
可以通过多次调用google-github-actions/auth action,每次指定不同的凭据密钥,实现同一个Job内的账户切换。每次认证会自动覆盖当前的GCP凭据,后续步骤将使用最新认证的账户。
示例配置:
jobs: multi_account_job: runs-on: ubuntu-latest steps: - uses: 'actions/checkout@v3' # 认证第一个GCP账户 - id: 'auth-prod' name: 'Authenticate to Production GCP' uses: 'google-github-actions/auth@v0' with: credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}' # 执行第一个账户的操作,比如部署到生产环境 - name: 'Deploy to Production' run: | gcloud config get-value project # 这里添加生产环境的具体操作命令 # 认证第二个GCP账户(Beta环境) - id: 'auth-beta' name: 'Authenticate to Beta GCP' uses: 'google-github-actions/auth@v0' with: credentials_json: '${{ secrets.beta_GOOGLE_CREDENTIALS }}' # 执行第二个账户的操作,比如部署到Beta环境 - name: 'Deploy to Beta' run: | gcloud config get-value project # 这里添加Beta环境的具体操作命令
如果需要更彻底的清理,可以在切换账户前执行gcloud auth revoke --all命令,清除本地所有已认证的凭据:
- name: 'Clear previous GCP credentials' run: gcloud auth revoke --all || true
方案二:使用独立Job处理不同账户
如果不同账户的任务不需要在同一个流程中衔接,可以创建多个独立的Job,每个Job单独认证对应的GCP账户,并行或串行执行任务。
示例配置:
jobs: # 生产环境任务Job prod_deploy: runs-on: ubuntu-latest steps: - uses: 'actions/checkout@v3' - id: 'auth-prod' name: 'Authenticate to Production GCP' uses: 'google-github-actions/auth@v0' with: credentials_json: '${{ secrets.GOOGLE_CREDENTIALS }}' - name: 'Deploy to Production' run: | # 生产环境部署命令 # Beta环境任务Job beta_deploy: runs-on: ubuntu-latest steps: - uses: 'actions/checkout@v3' - id: 'auth-beta' name: 'Authenticate to Beta GCP' uses: 'google-github-actions/auth@v0' with: credentials_json: '${{ secrets.beta_GOOGLE_CREDENTIALS }}' - name: 'Deploy to Beta' run: | # Beta环境部署命令
注意事项
- 确保GitHub仓库的Secrets中已正确配置
GOOGLE_CREDENTIALS和beta_GOOGLE_CREDENTIALS两个密钥,内容为对应GCP服务账户的JSON凭据。 - 每个认证步骤建议设置不同的
id,方便后续步骤引用(如果需要)。
内容的提问来源于stack exchange,提问作者jipot
相关产品推荐
相关产品推荐

