簡體   English   中英

從工件注冊表中刪除圖像時如何忽略 cloudbuild.yaml 中的“找不到圖像”錯誤?

[英]How to ignore "image not found" error in cloudbuild.yaml when deleting images from the artifact registry?

目前 cloudbuild.yaml 看起來像這樣:

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: [ 'artifacts', 'docker', 'images', 'delete', 'location-docker.pkg.dev/$PROJECT_ID/repository/image' ]
- name: 'gcr.io/cloud-builders/docker'
  args: [ 'build', '-t', 'location-docker.pkg.dev/$PROJECT_ID/repository/image:latest', './' ]
- name: 'gcr.io/cloud-builders/docker'
  args: ['push', 'location-docker.pkg.dev/$PROJECT_ID/reporitory/image:latest']
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: gcloud
  args: ['run', 'deploy', 'image', '--image', 'us-east1-docker.pkg.dev/$PROJECT_ID/cb-area52-ar/area52-image:latest', '--region', 'region']


images:
- 'location-docker.pkg.dev/$PROJECT_ID/registry/image:latest'

這基本上執行以下操作:

  1. 刪除工件注冊表中的現有圖像
  2. 建立新形象
  3. 將其推回工件注冊表
  4. 將其部署到谷歌雲運行

我現在的問題是,只要注冊表中沒有圖像,第一步就會失敗。

發生這種情況時,如何防止它取消整個構建過程?

您可以創建一個內聯腳本來檢查圖像是否存在。 這假設您總是想刪除帶有latest標簽的圖像。

steps:
- name: 'gcr.io/cloud-builders/gcloud'
  entrypoint: 'bash'
  args:
  - '-eEuo'
  - 'pipefail'
  - '-c'
  - |-
    if [[ -z `gcloud artifacts docker images describe location-docker.pkg.dev/$PROJECT_ID/repository/image:latest --verbosity=none --format=text` ]]
    then
      echo "Image does not exist. Continue with the build"
    else
      echo "Deleting Image"
      gcloud artifacts docker images delete location-docker.pkg.dev/$PROJECT_ID/repository/image
    fi

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM