aName
aName

Reputation: 3063

How to get latest version of an image from artifact registry

is there a command (gcloud) that return the latest fully qualified name of an image from Artifact registry

Upvotes: 5

Views: 5042

Answers (2)

Hyaz Oulephant
Hyaz Oulephant

Reputation: 13

Many thanks to the previous answer, I use it to remove the tag "latest" of my last pushed artifact. I then add it when I push another. Leaving here if anyone interested.

Doc : https://cloud.google.com/artifact-registry/docs/docker/manage-images#tag

Remove tag :

gcloud artifacts docker tags delete \
$(gcloud artifacts docker images list ${REGION}-docker.pkg.dev/\
${PROJECT}/${REPO}/${IMAGE}/\ 
--filter="package=${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}"\
 --sort-by="~UPDATE_TIME" --limit=1 --format="value(format("{0}",package))"):latest

Add tag:

gcloud artifacts docker tags add \
$(gcloud artifacts docker images list \
${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}/ \
--filter="package=${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}" \
--sort-by="~UPDATE_TIME" --limit=1 \
--format="value(format("{0}@{1}",package,version))") \
$(gcloud artifacts docker images list \
${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}/ \
--filter="package=${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}" \
--sort-by="~UPDATE_TIME" --limit=1 \
--format="value(format("{0}",package))"):latest

Upvotes: 0

DazWilkin
DazWilkin

Reputation: 40326

Try:

PROJECT=
REGION=
REPO=
IMAGE=

gcloud artifacts docker images list \
${REGION}-docker.pkg.dev/${PROJECT}/${REPO} \
--filter="package=${REGION}-docker.pkg.dev/${PROJECT}/${REPO}/${IMAGE}" \
--sort-by="~UPDATE_TIME" \
--limit=1 \
--format="value(format("{0}@{1}",package,version))"

Because:

  1. Filters the list for a specific image
  2. Sorts the results descending (~) by UPDATE_TIME1
  3. Only takes 1 value i.e. the most recent
  4. Outputs the results as {package}@{version}

1 -- Curiously, --sort-by uses the output (!) field name not the underlying type (surfaced by e.g. --format=json or --format=yaml) name.

Upvotes: 13

Related Questions