【问题标题】:how to specify default cloud run revision url in the cloud build yaml file如何在云构建 yaml 文件中指定默认的云运行修订 url
【发布时间】: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 的 url

这有助于我使用其唯一 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


【解决方案1】:

要自动Deploy revision with tag,请在您的yaml 文件中添加以下类似步骤

- id: "deploy revision with tag"
    name: "gcr.io/google.com/cloudsdktool/cloud-sdk"
    entrypoint: "gcloud"
    args:
      [
        "run",
        "deploy",
        "${_SERVICE_NAME}",
        "--platform",
        "managed",
        "--region",
        "${_REGION}",
        "--image",
        "gcr.io/${PROJECT_ID}/${_SERVICE_NAME}:${_PR_NUMBER}-${SHORT_SHA}",
        "--tag",
        "pr-${_PR_NUMBER}",
      ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-01
    • 2021-05-18
    • 2020-05-13
    • 2021-04-13
    • 2022-12-23
    • 2019-09-18
    • 2019-07-11
    • 2021-10-20
    相关资源
    最近更新 更多