如何通过GitHub Actions部署第二代Google Cloud Functions?解决认证错误
GitHub Actions部署第二代Google Cloud Functions配置方案
核心问题分析
你之前使用的google-github-actions/deploy-cloud-functions@v0版本不支持第二代Cloud Functions,这是导致认证错误的主要原因。同时第二代函数需要明确指定环境类型,且服务账号权限需匹配第二代的权限要求。
完整工作流配置
以下是适配第二代函数的GitHub工作流,触发条件为推送到main分支或合并PR到main分支:
name: Deploy Gen2 Cloud Function on: push: branches: [ main ] pull_request: branches: [ main ] types: [ closed ] if: github.event.pull_request.merged == true jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Authenticate to Google Cloud uses: google-github-actions/auth@v2 with: credentials_json: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} - id: "deploy" uses: "google-github-actions/deploy-cloud-functions@v2" with: name: "<cloud-function-name>" runtime: "python310" region: "us-east1" entry_point: "<function-in-main-file>" timeout: 540 service_account_email: PROJECT@appspot.gserviceaccount.com ingress_settings: ALLOW_ALL max_instances: 1 # 关键:指定为第二代函数环境 environment: gen2 # 第二代可选配置(按需添加) # available_memory: 256Mi # vpc_connector: "projects/PROJECT/locations/REGION/connectors/CONNECTOR_NAME"
关键配置说明
- Action版本升级:将部署Action从
@v0升级到@v2,该版本完全支持第二代Cloud Functions。 - 认证步骤:新增
google-github-actions/auth@v2步骤,通过GitHub Secrets中存储的服务账号凭据完成认证,确保权限传递正确。 - 指定第二代环境:添加
environment: gen2参数,明确告知Action部署第二代函数。 - 服务账号权限检查:确保你的
PROJECT@appspot.gserviceaccount.com服务账号拥有以下权限:- Cloud Functions Developer
- Service Account User
- Cloud Run Admin(第二代函数基于Cloud Run,需此权限)
前置准备
- 在GitHub仓库的
Settings > Secrets and variables > Actions中添加GOOGLE_APPLICATION_CREDENTIALS,值为服务账号的JSON密钥内容。 - 在Google Cloud控制台中,为目标服务账号授予上述所需权限。
内容的提问来源于stack exchange,提问作者Kyle Venn
相关产品推荐
相关产品推荐

