如何实现从Cloud Repository部署第二代Google Cloud Function的工作流?
实现第二代Google Cloud Functions的代码推送自动部署工作流
第二代Cloud Functions不再支持直接通过Cloud Source Repositories触发部署,你可以通过以下两种主流方案实现和第一代类似的"代码推送即部署"工作流:
方案一:使用GitHub Actions
- 创建Google Cloud服务账号,授予Cloud Functions Admin和Storage Admin权限,下载该账号的JSON密钥文件。
- 在你的GitHub仓库中,进入
Settings > Secrets and variables > Actions,添加两个机密:GCP_SERVICE_ACCOUNT_KEY:填入刚才下载的JSON密钥内容GCP_PROJECT_ID:填入你的Google Cloud项目ID
- 在仓库的
.github/workflows目录下创建部署配置文件(例如deploy-gcf-v2.yml),内容如下:
name: Deploy Cloud Function v2 on: push: branches: [ main ] # 监听主分支的代码推送 jobs: deploy: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: 配置gcloud CLI uses: google-github-actions/setup-gcloud@v2 with: service_account_key: ${{ secrets.GCP_SERVICE_ACCOUNT_KEY }} project_id: ${{ secrets.GCP_PROJECT_ID }} - name: 部署第二代Cloud Function run: | gcloud functions deploy YOUR_FUNCTION_NAME \ --gen2 \ --runtime nodejs20 \ # 替换为你的函数运行时(如python311) --region us-central1 \ # 替换为你的函数部署区域 --trigger-http \ # 替换为你的触发器类型(如--trigger-topic=MY_TOPIC) --source .
- 提交并推送上述配置文件到GitHub,之后每次向指定分支推送代码,GitHub Actions都会自动执行部署。
方案二:使用Cloud Build + Cloud Source Repositories
- 保留原有的GitHub与Cloud Source Repositories的关联配置。
- 在Google Cloud控制台打开Cloud Build服务,创建新触发器:
- 触发器源选择
Cloud Source Repositories,关联你的目标仓库 - 设置触发条件为"推送到分支",指定要监听的分支(如main)
- 构建配置选择"Cloud Build配置文件",指定仓库中
cloudbuild.yaml的路径
- 触发器源选择
- 在仓库根目录创建
cloudbuild.yaml文件,内容如下:
steps: - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' args: - gcloud - functions - deploy - YOUR_FUNCTION_NAME - --gen2 - --runtime=nodejs20 - --region=us-central1 - --trigger-http - --source=.
- 为Cloud Build默认服务账号授予Cloud Functions Admin和Storage Admin权限,保存触发器后,后续代码推送至Cloud Source Repositories时,会自动触发Cloud Build完成部署。
注意事项
- 替换所有示例中的
YOUR_FUNCTION_NAME、运行时、区域、触发器类型为你实际的函数配置 - 确保服务账号拥有足够的权限,避免部署过程中出现权限错误
- 可根据需求调整触发分支,比如仅在特定开发分支推送时触发测试部署
内容的提问来源于stack exchange,提问作者pwwolff
相关产品推荐
相关产品推荐

