diff --git a/utils/publish/production.sh b/utils/publish/production.sh index 62d368f..8c3e6fb 100755 --- a/utils/publish/production.sh +++ b/utils/publish/production.sh @@ -22,6 +22,20 @@ if ! [[ "$CI_COMMIT_TAG" =~ ^[0-9]+[.][0-9]+[.][0-9]+$ ]]; then exit 1 fi +# If no build indication was given, assume BUILD_LATEST. +# Most likely, this will only cover builds triggered from tag pushes. +if [ -z $BUILD_LATEST -o \ + -z $BUILD_MAJOR -o \ + -z $BUILD_MINOR -o \ + -z $BUILD_REVISION ]; then + BUILD_LATEST=true +fi + +# Cascade the builds by inheritance. +if [ $BUILD_LATEST ]; then BUILD_MAJOR=true; BUILD_MINOR=true; BUILD_REVISION=true; fi +if [ $BUILD_MAJOR ]; then BUILD_MINOR=true; BUILD_REVISION=true; fi +if [ $BUILD_MINOR ]; then BUILD_REVISION=true; fi + # Define MAJOR, MINOR and REVISION version numbers. MAJOR_NUMBER=$(echo "$CI_COMMIT_TAG" | awk -F \. {'print $1'}) MINOR_NUMBER=$(echo "$CI_COMMIT_TAG" | awk -F \. {'print $2'}) @@ -30,15 +44,15 @@ MAJOR=$MAJOR_NUMBER MINOR=$MAJOR.$MINOR_NUMBER REVISION=$MINOR.$REVISION_NUMBER -# Build. +# Always build with all tags, there's a single build anyway. docker build \ -t $CI_REGISTRY_IMAGE:latest \ -t $CI_REGISTRY_IMAGE:$MAJOR \ -t $CI_REGISTRY_IMAGE:$MINOR \ -t $CI_REGISTRY_IMAGE:$REVISION . -# And push. -docker push $CI_REGISTRY_IMAGE:latest -docker push $CI_REGISTRY_IMAGE:$MAJOR -docker push $CI_REGISTRY_IMAGE:$MINOR -docker push $CI_REGISTRY_IMAGE:$REVISION \ No newline at end of file +# Only push requested builds. +if [ $BUILD_LATEST ]; then docker push $CI_REGISTRY_IMAGE:latest; fi +if [ $BUILD_MAJOR ]; then docker push $CI_REGISTRY_IMAGE:$MAJOR; fi +if [ $BUILD_MINOR ]; then docker push $CI_REGISTRY_IMAGE:$MINOR; fi +if [ $BUILD_REVISION ]; then docker push $CI_REGISTRY_IMAGE:$REVISION; fi \ No newline at end of file