update build.sh to accept generic services
This commit is contained in:
86
build.sh
86
build.sh
@@ -11,14 +11,13 @@
|
|||||||
# -r, --release Version from .env for releases
|
# -r, --release Version from .env for releases
|
||||||
# -v, --version VERSION Custom version
|
# -v, --version VERSION Custom version
|
||||||
# -p, --push Push images after build
|
# -p, --push Push images after build
|
||||||
# -b, --backend-only Only build backend
|
# -o, --only SERVICE Only build this service (repeatable)
|
||||||
# -f, --frontend-only Only build frontend
|
|
||||||
# -h, --help Show this help
|
# -h, --help Show this help
|
||||||
#
|
#
|
||||||
# Examples:
|
# Examples:
|
||||||
# ./build.sh -r -p
|
# ./build.sh -r -p
|
||||||
# ./build.sh -s -frontend-only
|
# ./build.sh -s -o frontend
|
||||||
# ./build.sh -v dev
|
# ./build.sh -v dev -o backend -o frontend
|
||||||
# ---------------------------------------------------------------------------
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
# -e: Exit immediately if any command returns a non-zero exit code
|
# -e: Exit immediately if any command returns a non-zero exit code
|
||||||
@@ -26,18 +25,20 @@
|
|||||||
# -o pipefail: Make pipelines fail if any command in the pipe fails, not just the last one
|
# -o pipefail: Make pipelines fail if any command in the pipe fails, not just the last one
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
|
# --- services to build (subfolder name = image suffix) ---------------------
|
||||||
|
#SERVICES=(backend frontend)
|
||||||
|
|
||||||
#cd to script dir
|
#cd to script dir
|
||||||
pushd "$(dirname "${BASH_SOURCE[0]}")"
|
pushd "$(dirname "${BASH_SOURCE[0]}")" > /dev/null
|
||||||
SCRIPT_DIR="$(pwd)"
|
SCRIPT_DIR="$(pwd)"
|
||||||
source "${SCRIPT_DIR}/.env"
|
source "${SCRIPT_DIR}/.env"
|
||||||
popd
|
popd > /dev/null
|
||||||
|
|
||||||
#default: snapshot
|
#default: snapshot
|
||||||
VERSION="${IMAGE_TAG}-SNAPSHOT$(git rev-parse --short HEAD 2>/dev/null || echo "local")"
|
VERSION="${IMAGE_TAG}-SNAPSHOT$(git rev-parse --short HEAD 2>/dev/null || echo "local")"
|
||||||
|
|
||||||
PUSH=false
|
PUSH=false
|
||||||
BUILD_BACKEND=true
|
ONLY=()
|
||||||
BUILD_FRONTEND=true
|
|
||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
sed -n '/^# Usage:/,/^# ---/p' "$0" | sed 's/^# //' | sed 's/^#//'
|
sed -n '/^# Usage:/,/^# ---/p' "$0" | sed 's/^# //' | sed 's/^#//'
|
||||||
@@ -47,69 +48,54 @@ usage() {
|
|||||||
# --- parse arguments -------------------------------------------------------
|
# --- parse arguments -------------------------------------------------------
|
||||||
while [[ $# -gt 0 ]]; do
|
while [[ $# -gt 0 ]]; do
|
||||||
case $1 in
|
case $1 in
|
||||||
-s|--snapshot) VERSION="${IMAGE_TAG}-SNAPSHOT$(git rev-parse --short HEAD 2>/dev/null || echo "local")"; shift ;;
|
-s|--snapshot) VERSION="${IMAGE_TAG}-SNAPSHOT$(git rev-parse --short HEAD 2>/dev/null || echo "local")"; shift ;;
|
||||||
-r|--release) VERSION=${IMAGE_TAG}; shift ;;
|
-r|--release) VERSION="${IMAGE_TAG}"; shift ;;
|
||||||
-v|--version) VERSION=$2; shift 2 ;;
|
-v|--version) VERSION="$2"; shift 2 ;;
|
||||||
-p|--push) PUSH=true; shift ;;
|
-p|--push) PUSH=true; shift ;;
|
||||||
-b|--backend-only) BUILD_FRONTEND=false; shift ;;
|
-o|--only) ONLY+=("$2"); shift 2 ;;
|
||||||
-f|--frontend-only) BUILD_BACKEND=false; shift ;;
|
-h|--help) usage ;;
|
||||||
-h|--help) usage ;;
|
|
||||||
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
# --- derive image names -----------------------------------------------------
|
# if --only was given, filter SERVICES down to those entries
|
||||||
registry_prefix="${REGISTRY}/"
|
if [[ ${#ONLY[@]} -gt 0 ]]; then
|
||||||
BACKEND_IMAGE="${registry_prefix}${IMAGE_NAME}-backend:${VERSION}"
|
SERVICES=("${ONLY[@]}")
|
||||||
FRONTEND_IMAGE="${registry_prefix}${IMAGE_NAME}-frontend:${VERSION}"
|
fi
|
||||||
|
|
||||||
#SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
||||||
|
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
echo " ${IMAGE_NAME} - Docker Build"
|
echo " ${IMAGE_NAME} - Docker Build"
|
||||||
|
echo ""
|
||||||
|
echo " Services : ${SERVICES[*]}"
|
||||||
echo " Version : ${VERSION}"
|
echo " Version : ${VERSION}"
|
||||||
echo " Registry : ${REGISTRY}"
|
echo " Registry : ${REGISTRY}"
|
||||||
echo " Push : ${PUSH}"
|
echo " Push : ${PUSH}"
|
||||||
echo "============================================"
|
echo "============================================"
|
||||||
|
|
||||||
# --- build ------------------------------------------------------------------
|
# --- build ------------------------------------------------------------------
|
||||||
if $BUILD_BACKEND; then
|
for SERVICE in "${SERVICES[@]}"; do
|
||||||
|
IMAGE="${REGISTRY}/${IMAGE_NAME}-${SERVICE}:${VERSION}"
|
||||||
echo ""
|
echo ""
|
||||||
echo ">>> Building backend: ${BACKEND_IMAGE}"
|
echo ">>> Building ${SERVICE}: ${IMAGE}"
|
||||||
docker build \
|
docker build --tag "${IMAGE}" "${SCRIPT_DIR}/${SERVICE}"
|
||||||
--tag "${BACKEND_IMAGE}" \
|
echo " ${SERVICE} built successfully."
|
||||||
"${SCRIPT_DIR}/backend"
|
done
|
||||||
echo " Backend built successfully."
|
|
||||||
fi
|
|
||||||
|
|
||||||
if $BUILD_FRONTEND; then
|
|
||||||
echo ""
|
|
||||||
echo ">>> Building frontend: ${FRONTEND_IMAGE}"
|
|
||||||
docker build \
|
|
||||||
--tag "${FRONTEND_IMAGE}" \
|
|
||||||
"${SCRIPT_DIR}/frontend"
|
|
||||||
echo " Frontend built successfully."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# --- push -------------------------------------------------------------------
|
# --- push -------------------------------------------------------------------
|
||||||
if $PUSH; then
|
if $PUSH; then
|
||||||
docker login ${REGISTRY}
|
docker login "${REGISTRY}"
|
||||||
|
for SERVICE in "${SERVICES[@]}"; do
|
||||||
if $BUILD_BACKEND; then
|
IMAGE="${REGISTRY}/${IMAGE_NAME}-${SERVICE}:${VERSION}"
|
||||||
echo ""
|
echo ""
|
||||||
echo ">>> Pushing ${BACKEND_IMAGE}"
|
echo ">>> Pushing ${IMAGE}"
|
||||||
docker push "${BACKEND_IMAGE}"
|
docker push "${IMAGE}"
|
||||||
fi
|
done
|
||||||
if $BUILD_FRONTEND; then
|
|
||||||
echo ""
|
|
||||||
echo ">>> Pushing ${FRONTEND_IMAGE}"
|
|
||||||
docker push "${FRONTEND_IMAGE}"
|
|
||||||
fi
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Images pushed successfully."
|
echo "Images pushed successfully."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Done."
|
echo "Done."
|
||||||
if $BUILD_BACKEND; then echo " Backend → ${BACKEND_IMAGE}"; fi
|
for SERVICE in "${SERVICES[@]}"; do
|
||||||
if $BUILD_FRONTEND; then echo " Frontend → ${FRONTEND_IMAGE}"; fi
|
echo " ${SERVICE} → ${REGISTRY}/${IMAGE_NAME}-${SERVICE}:${VERSION}"
|
||||||
|
done
|
||||||
Reference in New Issue
Block a user