Newer
Older
netbox-docker / build-all.sh
@Christian Mäder Christian Mäder on 6 Feb 2019 2 KB Build system for hub.docker.com
#!/bin/bash
# Builds all Docker images this project provides
# Arguments:
#   BUILD:     The release to build.
#              Allowed: release, prerelease, branches, special
#              Default: undefined

echo "▶️ $0 $*"

ALL_BUILDS=("release" "prerelease" "branches" "special")
BUILDS=("${BUILD:-"${ALL_BUILDS[@]}"}")

echo "⚙️ Configured builds: ${BUILDS[*]}"

VARIANTS=("main" "ldap")

if [ -n "${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
for VARIANT in "${VARIANTS[@]}"; do
  export VARIANT

  # Checking which VARIANT to build
  if [ "${VARIANT}" == "main" ]; then
    DOCKERFILE="${DOCKERFILE_PATH-Dockerfile}"
  else
    DOCKERFILE="${DOCKERFILE_PATH-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 "✅ No special builds today."
        ;;
      *)
        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

exit $ERROR