cloudbuild.yaml 中构建步骤中的 gcloud beta 命令。我应该使用入口点还是参数?
Posted
技术标签:
【中文标题】cloudbuild.yaml 中构建步骤中的 gcloud beta 命令。我应该使用入口点还是参数?【英文标题】:gcloud beta command in build step in cloudbuild.yaml. Should I use entrypoint or args? 【发布时间】:2021-03-21 21:16:48 【问题描述】:我正在尝试构建 Docker 映像并将其部署到 Cloud Run。而且我想设置min-instances=1
这样可以避免冷启动。
我正在通过 gcloud
CLI 使用 Cloud Build 构建和部署它。
所以这是我在gcloud
CLI 的第一次尝试:
gcloud builds submit . --config=./cloudbuild.yaml
以下是我的cloudbuild.yaml
中描述的构建步骤:
steps:
# STEP_1: DOCKER BUILDS IMAGE
# STEP_2: DOCKER PUSHES IMAGE TO CLOUD REGISTRY
# STEP_3: GCLOUD SHOULD DEPLOY TO CLOUD RUN (DESCRIBED BELOW)
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: gcloud
args:
- "run"
- "deploy"
- "my-service"
- "--image=gcr.io/$PROJECT_ID/my-image"
- "--platform=managed"
- "--region=us-central1"
- "--min-instances=1"
您会看到构建 STEP_3
运行:gcloud run deploy my-service ... min-instances=1
我收到以下错误:
The `--min-instances` flag is not supported in the GA release track on the
fully managed version of Cloud Run. Use `gcloud beta` to set `--min-instances` on Cloud Run (fully managed).
所以我想我将不得不使用gcloud beta
命令。但在这种情况下我有一些问题:
我还需要将beta
命令添加到我的gcloud builds submit .
命令吗?
我应该如何在cloudbuilt.yaml
中设置它?我是将其添加到entrypoint
还是作为args
中的参数?
选项 #1
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: "gcloud beta"
args:
- "run"
// ETC
选项 #2
- name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
entrypoint: gcloud
args:
- "beta"
- "run"
// ETC
【问题讨论】:
在 args 下使用。所有元素都连接成一个字符串。 @Pentium10 - 发表您的评论作为答案。 【参考方案1】:两者都没有隐藏的原因。
在 args 下使用。所有元素都连接成一个字符串。
【讨论】:
以上是关于cloudbuild.yaml 中构建步骤中的 gcloud beta 命令。我应该使用入口点还是参数?的主要内容,如果未能解决你的问题,请参考以下文章
Google Cloud Build 不会替换 cloudbuild.yaml 的机密部分中的值
无法使用 Google Cloud 构建从 cloudbuild.yaml 运行 Sonarqube 分析
cloudbuild.yaml 上的错误:(gcloud.builds.submit)将 cloudbuild.yaml 解释为构建配置:“列表”对象没有属性“项目”