diff --git a/.github/build-and-upload.sh b/.github/build-and-upload.sh old mode 100644 new mode 100755 index 217bb7d..a377b9b --- a/.github/build-and-upload.sh +++ b/.github/build-and-upload.sh @@ -1,20 +1,12 @@ #!/bin/bash -echo "Cloning graphhopper" -git clone https://github.com/graphhopper/graphhopper.git -echo "Building docker image" -docker build . -t israelhikingmap/graphhopper:latest -docker login --username $DOCKERHUB_USER --password $DOCKERHUB_TOKEN -echo "Publishing docker image" -docker push israelhikingmap/graphhopper:latest +echo "Buidling and pushing israelhikingmap/graphhopper:latest" +./build.sh --push -TAG=`cd graphhopper; git for-each-ref --sort=committerdate refs/tags | tail -n 1 | cut -d "/" -f3` -if docker manifest inspect israelhikingmap/graphhopper:$TAG >/dev/null; then - echo "No need to publish existing version: $TAG"; +TAG=`cd graphhopper; git for-each-ref --sort=committerdate refs/tags | sed -n '$s/.*\///p'` +if docker manifest inspect "israelhikingmap/graphhopper:${TAG}" >/dev/null; then + echo "No need to push existing version: ${TAG}"; else - (cd graphhopper ; git checkout tags/$TAG) - echo "Building docker image for tag: $TAG" - docker build . -t israelhikingmap/graphhopper:$TAG - echo "Publishing docker image for tag: $TAG" - docker push israelhikingmap/graphhopper:$TAG + echo "Buidling and pushing israelhikingmap/graphhopper:${TAG}" + ./build.sh --push "${TAG}" fi diff --git a/build.sh b/build.sh index a4fd9c6..1d4b378 100755 --- a/build.sh +++ b/build.sh @@ -2,19 +2,32 @@ usage() ( cat < | --help] + ./build.sh [[--push] ] + ./build.sh --help Argument: - Build an image for the given graphhopper repository tag [default: master] + Build an image for the given graphhopper repository tag [default: master] Option: - --help Print this message + --push Push the image to Docker Hub + --help Print this message + +Docker Hub credentials are needed for pushing the image. If they are not provided using the +DOCKERHUB_USER and DOCKERHUB_TOKEN environment variables, then they will be asked interactively. USAGE ) +if [ "$1" == "--push" ]; then + push="true" + docker login --username "${DOCKERHUB_USER}" --password "${DOCKERHUB_TOKEN}" || exit $? + shift +else + push="false" +fi + if [ $# -gt 1 ] || [ "$1" == "--help" ]; then usage exit @@ -23,6 +36,9 @@ fi if [ ! -d graphhopper ]; then echo "Cloning graphhopper" git clone https://github.com/graphhopper/graphhopper.git +else + echo "Pulling graphhopper" + (cd graphhopper; git checkout master; git pull) fi imagename="israelhikingmap/graphhopper:${1:-latest}" @@ -32,8 +48,10 @@ if [ "$1" ]; then fi echo "Building docker image ${imagename}" -docker build . -t ${imagename} +docker build . -t "${imagename}" -if [ $# -eq 1 ]; then +if [ "${push}" == "false" ]; then echo "Use \"docker push ${imagename}\" to publish the image on Docker Hub" +else + docker push "${imagename}" fi