You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何GCP Build搭配Google Run每次触发都会创建新服务?如何更新服务?

GCP Build部署Google Run重复创建服务的问题处理

问题描述

我搭建了基础的CI/CD流程,向GitHub仓库推送代码时会触发构建,本应通过GCP Build将代码部署至Google Run,但目前每次触发都会在云账号中创建新服务,不清楚原因。期望的是更新Google Run上当前运行的服务,或是创建新服务后将100%流量迁移至新服务并删除旧服务。

部署界面高亮区域截图:
部署界面高亮区域

排查与解决步骤

1. 确认部署命令的服务名称是否固定

Google Run会根据服务名称区分实例,若部署命令中服务名动态变化(比如包含Git哈希、时间戳),就会每次创建新服务。检查你的gcloud run deploy命令,确保服务名称是固定值:

# 正确示例:固定服务名
gcloud run deploy my-fixed-service --image gcr.io/my-project/my-image --region us-central1

2. 检查GCP Build触发器的部署配置

结合截图中高亮的区域,重点排查:

  • 触发器的部署步骤是否自动生成了带后缀的服务名
  • 是否存在默认勾选"创建新服务"的选项(部分可视化配置界面会有这类隐性设置)

3. 实现更新+流量迁移+旧服务清理的流程

如果需要保留新版本部署并自动完成流量迁移、旧版本清理,可使用以下命令组合:

# 部署新版本(基于已有服务创建修订版本,不新增服务)
gcloud run deploy my-fixed-service --image gcr.io/my-project/my-image --region us-central1
# 强制将100%流量切换到最新修订版本
gcloud run services update-traffic my-fixed-service --to-latest
# 删除所有未被流量指向的旧修订版本
gcloud run revisions delete $(gcloud run revisions list --service my-fixed-service --filter="TRAFFIC=0" --format="value(NAME)") --region us-central1

4. 排查CI/CD变量的影响

检查CI/CD流程中是否有变量注入到服务名称中,比如误将构建ID、分支名作为服务名的一部分,导致每次部署服务名不同。

内容的提问来源于stack exchange,提问作者Lonare

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:05:13