From 7f2cd575cb7a240267c0bf7b0ec86412b7fc1738 Mon Sep 17 00:00:00 2001 From: roschaefer Date: Wed, 11 Sep 2019 02:34:35 +0200 Subject: [PATCH] Push all docker images at VERSION to dockerhub Inspired by the tagging of e.g. `node` on dockerhub: https://hub.docker.com/_/node/?tab=description I would like to push the current version of all our images to dockerhub. This is a first step to push to production later on. If sb. increments the VERSION file, this is considered a release. --- VERSION | 1 + docker-compose.yml | 6 ++++++ scripts/docker_push.sh | 40 ++++++++++++++++++++++++++++++---------- 3 files changed, 37 insertions(+), 10 deletions(-) create mode 100644 VERSION diff --git a/VERSION b/VERSION new file mode 100644 index 000000000..6e8bf73aa --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +0.1.0 diff --git a/docker-compose.yml b/docker-compose.yml index 37e8eb94d..587ec718f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,6 +6,8 @@ services: build: context: webapp target: production + args: + - "BUILD_COMMIT=${TRAVIS_COMMIT}" ports: - 3000:3000 networks: @@ -23,6 +25,8 @@ services: build: context: backend target: production + args: + - "BUILD_COMMIT=${TRAVIS_COMMIT}" networks: - hc-network depends_on: @@ -45,6 +49,8 @@ services: image: humanconnection/neo4j:latest build: context: neo4j + args: + - "BUILD_COMMIT=${TRAVIS_COMMIT}" networks: - hc-network environment: diff --git a/scripts/docker_push.sh b/scripts/docker_push.sh index 1677b0d3c..475ad9719 100755 --- a/scripts/docker_push.sh +++ b/scripts/docker_push.sh @@ -1,12 +1,32 @@ #!/usr/bin/env bash +ROOT_DIR=$(dirname "$0") +DOCKER_CLI_EXPERIMENTAL=enabled +# BUILD_COMMIT=${TRAVIS_COMMIT:-$(git rev-parse HEAD)} + +IFS='.' read -r major minor patch < $ROOT_DIR/../VERSION +apps=(nitro-web nitro-backend neo4j maintenance-worker maintenance) +tags=(latest $major $major.$minor $major.$minor.$patch) + +# These three docker images have already been built by now: +# docker build --build-arg BUILD_COMMIT=$BUILD_COMMIT --target production -t humanconnection/nitro-backend:latest $ROOT_DIR/backend +# docker build --build-arg BUILD_COMMIT=$BUILD_COMMIT --target production -t humanconnection/nitro-web:latest $ROOT_DIR/webapp +# docker build --build-arg BUILD_COMMIT=$BUILD_COMMIT -t humanconnection/neo4j:latest $ROOT_DIR/neo4j +docker build -t humanconnection/maintenance-worker:latest $ROOT_DIR/deployment/legacy-migration/maintenance-worker +docker build -t humanconnection/maintenance:latest $ROOT_DIR/webapp/ -f $ROOT_DIR/webapp/Dockerfile.maintenance + echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin -docker build --build-arg BUILD_COMMIT=$TRAVIS_COMMIT --target production -t humanconnection/nitro-backend:latest $TRAVIS_BUILD_DIR/backend -docker build --build-arg BUILD_COMMIT=$TRAVIS_COMMIT --target production -t humanconnection/nitro-web:latest $TRAVIS_BUILD_DIR/webapp -docker build --build-arg BUILD_COMMIT=$TRAVIS_COMMIT -t humanconnection/neo4j:latest $TRAVIS_BUILD_DIR/neo4j -docker build -t humanconnection/maintenance-worker:latest $TRAVIS_BUILD_DIR/deployment/legacy-migration/maintenance-worker -docker build -t humanconnection/maintenance:latest $TRAVIS_BUILD_DIR/webapp/ -f $TRAVIS_BUILD_DIR/webapp/Dockerfile.maintenance -docker push humanconnection/nitro-backend:latest -docker push humanconnection/nitro-web:latest -docker push humanconnection/neo4j:latest -docker push humanconnection/maintenance-worker:latest -docker push humanconnection/maintenance:latest + +for app in "${apps[@]}" +do + for tag in "${tags[@]}" + do + SOURCE="humanconnection/${app}:latest" + TARGET="humanconnection/${app}:${tag}" + if docker manifest inspect $TARGET &> /dev/null; then + echo "Docker image ${TARGET} already present, skipping ..." + else + docker tag $SOURCE $TARGET + docker push tag + fi + done +done