#!/bin/bash # Builds all Docker images this project provides # Arguments: # BUILD: The release to build. # Allowed: release, prerelease, branches, special # Default: undefined echo "▶️ $0 $*" set -x ALL_BUILDS=("release" "prerelease" "branches" "special") BUILDS=("${BUILD:-"${ALL_BUILDS[@]}"}") echo "⚙️ Configured builds: ${BUILDS[*]}" VARIANTS=("" "ldap") if [ ! -z "${DEBUG}" ]; then export DEBUG fi ERROR=0 # Don't build if not on `master` and don't build if on a pull request, # but build when DEBUG is not empty if [ ! -z "${DEBUG}" ] || \ ( [ "$TRAVIS_BRANCH" = "master" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ] ); then for VARIANT in "${VARIANTS[@]}"; do export VARIANT # Checking which VARIANT to build if [ -z "$VARIANT" ]; then DOCKERFILE="Dockerfile" else DOCKERFILE="Dockerfile.${VARIANT}" # Fail fast if [ ! -f "${DOCKERFILE}" ]; then echo "🚨 The Dockerfile '${DOCKERFILE}' for variant '${VARIANT}' doesn't exist." ERROR=1 if [ -z "$DEBUG" ]; then continue else echo "⚠️ Would skip this, but DEBUG is enabled." fi fi fi for BUILD in "${BUILDS[@]}"; do echo "🛠 Building '$BUILD' from '$DOCKERFILE'" case $BUILD in release) # build the latest release # shellcheck disable=SC2068 ./build-latest.sh $@ || ERROR=1 ;; prerelease) # build the latest pre-release # shellcheck disable=SC2068 PRERELEASE=true ./build-latest.sh $@ || ERROR=1 ;; branches) # build all branches # shellcheck disable=SC2068 ./build-branches.sh $@ || ERROR=1 ;; special) # special build # shellcheck disable=SC2068 SRC_ORG=lampwins TAG=webhooks-backend ./build.sh "feature/webhooks-backend" $@ || ERROR=1 ;; *) echo "🚨 Unrecognized build '$BUILD'." if [ -z "$DEBUG" ]; then exit 1 else echo "⚠️ Would exit here with code '1', but DEBUG is enabled." fi ;; esac done done else echo "❎ Not building anything." fi exit $ERROR