Skip to content
Permalink
Browse files

Cleanup old docker images (#1430)

* gcrgc.sh

* cleanup during deploy

* latest tag is not needed
  • Loading branch information
gdbelvin committed Jan 14, 2020
1 parent 68e4b31 commit 93eafc94a50c35f0fcc9a8eaf95f10b50ead373e
Showing with 60 additions and 6 deletions.
  1. +7 −6 scripts/deploy.sh
  2. +53 −0 scripts/gcrgc.sh
@@ -50,12 +50,13 @@ docker-compose build --parallel
echo "Pushing docker images..."
docker-compose push

echo "Tagging docker images..."
gcloud --quiet container images add-tag gcr.io/${PROJECT_NAME_CI}/prometheus:${TRAVIS_COMMIT} gcr.io/${PROJECT_NAME_CI}/prometheus:latest
gcloud --quiet container images add-tag gcr.io/${PROJECT_NAME_CI}/keytransparency-server:${TRAVIS_COMMIT} gcr.io/${PROJECT_NAME_CI}/keytransparency-server:latest
gcloud --quiet container images add-tag gcr.io/${PROJECT_NAME_CI}/keytransparency-sequencer:${TRAVIS_COMMIT} gcr.io/${PROJECT_NAME_CI}/keytransparency-sequencer:latest
gcloud --quiet container images add-tag gcr.io/${PROJECT_NAME_CI}/keytransparency-monitor:${TRAVIS_COMMIT} gcr.io/${PROJECT_NAME_CI}/keytransparency-monitor:latest

echo "Cleaning old docker images..."
BEFORE_DATE=$(date -v -30d +%Y-%m-%d)
./scripts/gcrgc.sh gcr.io/key-transparency/init $BEFORE_DATE
./scripts/gcrgc.sh gcr.io/key-transparency/prometheus $BEFORE_DATE
./scripts/gcrgc.sh gcr.io/key-transparency/keytransparency-server $BEFORE_DATE
./scripts/gcrgc.sh gcr.io/key-transparency/keytransparency-sequencer $BEFORE_DATE
./scripts/gcrgc.sh gcr.io/key-transparency/keytransparency-monitor $BEFORE_DATE

echo "Updating jobs..."
cd deploy/kubernetes/base
@@ -0,0 +1,53 @@
#!/bin/bash

# Copyright © 2017 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Souce: https://gist.github.com/ahmetb/7ce6d741bd5baa194a3fac6b1fec8bb7

IFS=$'\n\t'
set -eou pipefail

if [[ "$#" -ne 2 || "${1}" == '-h' || "${1}" == '--help' ]]; then
cat >&2 <<"EOF"
gcrgc.sh cleans up tagged or untagged images pushed before specified date
for a given repository (an image name without a tag/digest).
USAGE:
gcrgc.sh REPOSITORY DATE
EXAMPLE
gcrgc.sh gcr.io/ahmet/my-app 2017-04-01
would clean up everything under the gcr.io/ahmet/my-app repository
pushed before 2017-04-01.
EOF
exit 1
elif [[ "${#2}" -ne 10 ]]; then
echo "wrong DATE format; use YYYY-MM-DD." >&2
exit 1
fi

main(){
local C=0
IMAGE="${1}"
DATE="${2}"
for digest in $(gcloud container images list-tags ${IMAGE} --limit=999999 --sort-by=TIMESTAMP \
--filter="timestamp.datetime < '${DATE}'" --format='get(digest)'); do
(
set -x
gcloud container images delete -q --force-delete-tags "${IMAGE}@${digest}"
)
let C=C+1
done
echo "Deleted ${C} images in ${IMAGE}." >&2
}

main "${1}" "${2}"

0 comments on commit 93eafc9

Please sign in to comment.
You can’t perform that action at this time.