Dockerfile
。
如要使用 Cloud Build 自动执行 Git 部署,请执行以下操作:
构建一个 Cloud Build 配置,以便:
- 构建容器映像
- 将映像推送到 Container Registry(已弃用)
- 将新修订版本部署到 Cloud Run 服务
为此,请在代码库的根目录下添加名为
cloudbuild.yaml
的文件,其中包含以下内容:steps: # build the container image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA', '.'] # push the container image to Container Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'] # Deploy container image to Cloud Run - name: 'gcr.io/cloud-builders/gcloud' args: - 'run' - 'deploy' - '[SERVICE-NAME]' - '--image' - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA' - '--region' - '[REGION]' images: - 'gcr.io/$PROJECT_ID/[SERVICE-NAME]:$COMMIT_SHA'
替换
- 将 [SERVICE-NAME] 替换为 Cloud Run 服务的名称。
- 将 [REGION] 替换为要部署的 Cloud Run 服务所在区域。
从 Git 代码库触发使用的
$COMMIT_SHA
替代变量时,Cloud Build 会填充该变量。向 Cloud Build 服务账号授予 Cloud Run Admin 和 Service Account User 角色:
打开 Google Cloud 控制台中的“Cloud Build 设置”页面:
在“服务账号权限”面板中,将 Cloud Run Admin 角色的状态设置为启用:
选择授予对所有服务账号的访问权限,为您页面上项目中的所有服务账号授予 Service Account User 角色。
点击左侧导航面板中的触发器,以打开“触发器”页面:
- 点击创建触发器。
- 在名称字段中,为触发器输入名称。
- 在事件下方,选择要启动触发器的代码库事件。
- 在来源下方,选择您的代码库以及用于启动触发器的分支或标记名称。如需详细了解如何指定要自动构建的分支,请参阅创建构建触发器
- 在 Cloud Build 配置文件(yaml 或 json)下,选择 Cloud Build 配置文件。
- 在 Cloud Build 配置文件位置字段中的
/
后面,输入cloudbuild.yaml
。 - 点击创建以保存您的构建触发器。
完成!从现在开始,向代码库执行的每一次推送都会自动调用构建并将相关内容部署到 Cloud Run 服务。
使用最低 IAM 权限实现持续部署
将一个容器部署到 Cloud Run 服务时,该容器将使用此 Cloud Run 服务的运行时服务账号的身份运行。 由于 Cloud Build 可以自动部署新容器,因此 Cloud Build 需要能够充当 Cloud Run 服务的运行时服务账号。
如要授予对 Cloud Build 的有限访问权限以部署到 Cloud Run 服务,请执行以下操作:
控制台界面
前往 Google Cloud 控制台中的服务账号页面:
点击 Cloud Run 服务的运行时服务账号的电子邮件地址(默认情况下为
PROJECT_NUMBER-compute@developer.gserviceaccount.com
)。点击权限标签页。
点击
授予访问权限。输入 Cloud Build 服务账号 (
PROJECT_NUMBER@cloudbuild.gserviceaccount.com
)在选择角色下拉列表中,选择服务账号 > Service Account User 角色。
点击保存。
gcloud
使用 gcloud iam service-accounts add-iam-policy-binding
命令:
gcloud iam service-accounts add-iam-policy-binding \ PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --member="serviceAccount:PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
将 PROJECT_NUMBER 替换为您的项目的数字 ID。
如果通过自定义服务身份使用 Cloud Run,请将 PROJECT_NUMBER-compute@developer.gserviceaccount.com
替换为您的服务账号地址。
有关详情,请参阅部署权限。
后续步骤
- 如需了解如何将容器映像部署或发布到其他项目中的私有注册表,请参阅设置服务账号权限