add build.sh
This commit is contained in:
107
build.sh
Normal file
107
build.sh
Normal file
@@ -0,0 +1,107 @@
|
|||||||
|
#set -euo pipefail
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
# build.sh – Build and push Docker images for Strichliste
|
||||||
|
#
|
||||||
|
# Usage:
|
||||||
|
# ./build.sh [OPTIONS]
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# -v, --version VERSION Image tag / version (default: git short SHA)
|
||||||
|
# -r, --registry REGISTRY Registry prefix (default: "")
|
||||||
|
# -p, --push Push images after build
|
||||||
|
# --backend-only Only build backend
|
||||||
|
# --frontend-only Only build frontend
|
||||||
|
# -h, --help Show this help
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# ./build.sh -v 1.2.3 -r ghcr.io/aquantico --push
|
||||||
|
# ./build.sh --version latest --registry registry.example.com --push
|
||||||
|
# ./build.sh -v dev # build only, no push
|
||||||
|
# ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
source ".env"
|
||||||
|
|
||||||
|
#default: snapshot
|
||||||
|
VERSION=$(git rev-parse --short HEAD 2>/dev/null || echo "local")
|
||||||
|
|
||||||
|
PUSH=false
|
||||||
|
BUILD_BACKEND=true
|
||||||
|
BUILD_FRONTEND=true
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
sed -n '/^# Usage:/,/^# ---/p' "$0" | sed 's/^# //' | sed 's/^#//'
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# --- parse arguments -------------------------------------------------------
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-s|--snapshot) VERSION=$(git rev-parse --short HEAD 2>/dev/null || echo "local"); shift ;;
|
||||||
|
-r|--release) VERSION=${IMAGE_TAG}; shift ;;
|
||||||
|
-v|--version) VERSION=$2; shift 2 ;;
|
||||||
|
-p|--push) PUSH=true; shift ;;
|
||||||
|
-b|--backend-only) BUILD_FRONTEND=false; shift ;;
|
||||||
|
-f|--frontend-only) BUILD_BACKEND=false; shift ;;
|
||||||
|
-h|--help) usage ;;
|
||||||
|
*) echo "Unknown option: $1" >&2; exit 1 ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# --- derive image names -----------------------------------------------------
|
||||||
|
registry_prefix="${REGISTRY}/"
|
||||||
|
BACKEND_IMAGE="${registry_prefix}${IMAGE_NAME}-backend:${VERSION}"
|
||||||
|
FRONTEND_IMAGE="${registry_prefix}${IMAGE_NAME}-frontend:${VERSION}"
|
||||||
|
|
||||||
|
#SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||||
|
|
||||||
|
echo "============================================"
|
||||||
|
echo " ${IMAGE_NAME} - Docker Build"
|
||||||
|
echo " Version : ${VERSION}"
|
||||||
|
echo " Registry : ${REGISTRY}"
|
||||||
|
echo " Push : ${PUSH}"
|
||||||
|
echo "============================================"
|
||||||
|
|
||||||
|
# --- build ------------------------------------------------------------------
|
||||||
|
if $BUILD_BACKEND; then
|
||||||
|
echo ""
|
||||||
|
echo ">>> Building backend: ${BACKEND_IMAGE}"
|
||||||
|
docker build \
|
||||||
|
--tag "${BACKEND_IMAGE}" \
|
||||||
|
"${SCRIPT_DIR}/backend"
|
||||||
|
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 -------------------------------------------------------------------
|
||||||
|
if $PUSH; then
|
||||||
|
docker login ${REGISTRY}
|
||||||
|
|
||||||
|
if $BUILD_BACKEND; then
|
||||||
|
echo ""
|
||||||
|
echo ">>> Pushing ${BACKEND_IMAGE}"
|
||||||
|
docker push "${BACKEND_IMAGE}"
|
||||||
|
fi
|
||||||
|
if $BUILD_FRONTEND; then
|
||||||
|
echo ""
|
||||||
|
echo ">>> Pushing ${FRONTEND_IMAGE}"
|
||||||
|
docker push "${FRONTEND_IMAGE}"
|
||||||
|
fi
|
||||||
|
echo ""
|
||||||
|
echo "Images pushed successfully."
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "Done."
|
||||||
|
if $BUILD_BACKEND; then echo " Backend → ${BACKEND_IMAGE}"; fi
|
||||||
|
if $BUILD_FRONTEND; then echo " Frontend → ${FRONTEND_IMAGE}"; fi
|
||||||
Reference in New Issue
Block a user