Skip to content

Instantly share code, notes, and snippets.

@kichiemon
Last active September 12, 2022 07:59
Show Gist options
  • Save kichiemon/4ba5bf921bc9e4d208db8723da69f0ed to your computer and use it in GitHub Desktop.
Save kichiemon/4ba5bf921bc9e4d208db8723da69f0ed to your computer and use it in GitHub Desktop.
#!/bin/sh
# e.g. CONTAINER_REGISTRY=asia.gcr.io/your-project-name/gcf/asia-northeast1
CONTAINER_REGISTRY=`WRITE YOUR REGISTRY NAME`
IMAGE_LIST=`gcloud container images list --repository=$CONTAINER_REGISTRY | awk 'NR!=1'`
for line in $IMAGE_LIST; do
gcloud container images delete "$line/worker" --quiet & gcloud container images delete "$line/cache" --quiet &
done
wait
@maganap
Copy link

maganap commented Oct 15, 2021

I could see there were many of the images tagged with the latest tag or with the name of my functions, but there were also a lot of untagged images in the same folders that I couldn't get rid of just by re-deploying with the latest firebase cli or using the script.

So I ended up with this:

#!/bin/sh

# e.g. CONTAINER_REGISTRY=asia.gcr.io/your-project-name/gcf/asia-northeast1
CONTAINER_REGISTRY='WRITE YOUR REGISTRY NAME'
LIMIT='unlimited' # change to LIMIT=1 if you want to test small
# DRY_RUN=1 # uncomment this to only list, but not delete
IMAGE_LIST=`gcloud container images list --repository=$CONTAINER_REGISTRY --limit=$LIMIT --format="get(name)"`

for image in $IMAGE_LIST; do
  echo "Image 1: $image"
  DIGEST_LIST=`gcloud container images list-tags $image --format="get(digest)"`
  for digest in $DIGEST_LIST; do
    echo "  -> Digest: $digest"
    if [ -z "$DRY_RUN" ]; then
      gcloud container images delete $image@$digest --force-delete-tags --quiet > /dev/null 2>&1
    fi
  done

  SUB_LIST=`gcloud container images list --repository=$image --format="get(name)"`
  for sub in $SUB_LIST; do
    echo "  Image 2: $sub"
    DIGEST_LIST=`gcloud container images list-tags $sub --format="get(digest)"`
    for digest in $DIGEST_LIST; do
      echo "    -> Digest: $digest"
      if [ -z "$DRY_RUN" ]; then
        gcloud container images delete $sub@$digest --force-delete-tags --quiet > /dev/null 2>&1
      fi
    done
  done
done

Hope it helps. Thanks @kichiemon.

@EricBatlle
Copy link

Anyone knows where can I found the CONTAINER_REGISTRY name? :(

@maganap
Copy link

maganap commented Jan 16, 2022

@EricBatlle Find the Container Registry in the cloud console for your project, then navigate the full path and you can copy-paste from the breadcrumb navigator :)
Screenshot 2022-01-16 at 20 33 10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment