繁体   English   中英

如何在云构建 yaml 文件中指定默认云运行修订版 url

[英]how to specify default cloud run revision url in the cloud build yaml file

我有一个 GCP 项目,我在其中使用云构建触发器不断将对 GitHub 存储库所做的更改 (PR) 部署到云运行服务
我最初设置它的方式是我使用 GCP GUI 在此处输入图像描述

这会导致云构建中的触发器\云构建触发器具有如下所示的 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 编号一样独特且简短,那就太好了

通常你可以这样做(见步骤 id: tag

  - 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
  - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk:slim'
    args:
      - -c
      - |
         export sha=$COMMIT_SHA
         export CUSTOM_TAG=${sha:0:8}
         export CURRENT_REV=$(gcloud alpha run services describe $_SERVICE_NAME --region=$_DEPLOY_REGION --platform=managed --format='value(status.traffic[0].revisionName)')
         gcloud run services update-traffic $_SERVICE_NAME --set-tags=$$CUSTOM_TAG=$$CURRENT_REV --region=$_DEPLOY_REGION --platform=managed
    id: tag
    entrypoint: bash
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

在那个自定义标签中,我把提交 SHA 的第一个字符 8

您可以注意到奇怪的环境变量 COMMIT_SHA 复制到本地环境变量。 CloudBuild 很奇怪。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM