【发布时间】:2023-02-02 16:31:30
【问题描述】:
我有一个 GCP 项目,我在其中使用云构建触发器将对 GitHub 存储库所做的更改 (PR) 持续部署到云运行服务
我最初设置它的方式是我使用 GCP GUI
这会导致 cloud-build 中的触发器\ 云构建触发器具有如下所示的 yaml 文件
- name: gcr.io/cloud-builders/docker
args:
- build
- '--no-cache'
- '-t'
- '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- .
- '-f'
- Dockerfile
id: Build
- name: gcr.io/cloud-builders/docker
args:
- push
- '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
id: Push
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
args:
- run
- services
- update
- $_SERVICE_NAME
- '--platform=managed'
- '--image=$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
- >-
--labels=managed-by=gcp-cloud-build-deploy-cloud-run,commit-sha=$COMMIT_SHA,gcb-build-id=$BUILD_ID,gcb-trigger-id=$_TRIGGER_ID,$_LABELS
- '--region=$_DEPLOY_REGION'
- '--quiet'
id: Deploy
entrypoint: gcloud
images:
- '$_GCR_HOSTNAME/$PROJECT_ID/$REPO_NAME/$_SERVICE_NAME:$COMMIT_SHA'
options:
substitutionOption: ALLOW_LOOSE
substitutions:
_PLATFORM: managed
_SERVICE_NAME: bordereau
_DEPLOY_REGION: europe-west1
_LABELS: gcb-trigger-id=((a long random id goes here))
_TRIGGER_ID: ((an other long random id goes here))
_GCR_HOSTNAME: eu.gcr.io
tags:
- gcp-cloud-build-deploy-cloud-run
- gcp-cloud-build-deploy-cloud-run-managed
- bordereau
这有助于我使用其唯一 URL 访问每个修订版
我尝试了很多方法来编辑云构建 YAML 文件以自动为每个修订版提供一个唯一的 URL(而不是通过 GCP GUI 手动),但我似乎没有找到方法!我尝试了很多关键字,并阅读了文档,但这也没有帮助!
很感谢任何形式的帮助。
如果修订 URL(标签)是唯一且简短的东西,比如提交 SHA 的第一个字符或 PR 编号,那就太好了
【问题讨论】:
-
你试过类似的东西吗
gcloud run services update-traffic --set-tags=....? -
那怎么写在yaml文件中呢?
-
与您在 Cloud Build 中编写
id: Deploy步骤的方式完全相同。使用 gcloud 步骤调用新的更新流量方法。但是,您的问题是否与标签名称创建有关(在调用更新服务方法之前在 bash 脚本中进行字符串操作)? -
我添加了一个步骤来执行您告诉我的操作,但该构建将永远存在。您能否尝试按照您认为可行的方式编辑提供的文件?
标签: google-cloud-platform continuous-deployment google-cloud-run google-cloud-build cloudbuild.yaml