getting things ready for release
This commit is contained in:
102
build.bash
Normal file
102
build.bash
Normal file
@@ -0,0 +1,102 @@
|
||||
#!/bin/bash
|
||||
|
||||
# f0ckm build script - compatible version
|
||||
# Targets: master, dev
|
||||
|
||||
# Detect docker compose command
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
DOCKER_COMPOSE="docker compose"
|
||||
elif docker-compose version >/dev/null 2>&1; then
|
||||
DOCKER_COMPOSE="docker-compose"
|
||||
else
|
||||
echo "Error: Neither 'docker compose' nor 'docker-compose' found"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Parse arguments
|
||||
TARGET="master"
|
||||
CACHE_FLAG=""
|
||||
BRANCH_TARGET=""
|
||||
|
||||
for arg in "$@"; do
|
||||
case $arg in
|
||||
master|dev|stg)
|
||||
TARGET=$arg
|
||||
;;
|
||||
--no-cache)
|
||||
CACHE_FLAG="--no-cache"
|
||||
;;
|
||||
*)
|
||||
if [ -z "$BRANCH_TARGET" ]; then
|
||||
BRANCH_TARGET=$arg
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
# Check if we are in a git repo
|
||||
if ! git rev-parse --is-inside-work-tree > /dev/null 2>&1; then
|
||||
echo "Error: not a git repository"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Set Image name and branch defaults
|
||||
IMAGE_NAME="f0ckm"
|
||||
|
||||
if [ "$TARGET" == "master" ]; then
|
||||
echo "--- PRODUCTION DEPLOYMENT (master) ---"
|
||||
BRANCH_TARGET="master"
|
||||
elif [ "$TARGET" == "stg" ]; then
|
||||
echo "--- STAGING DEPLOYMENT ---"
|
||||
BRANCH_TARGET="dev"
|
||||
else
|
||||
echo "--- LOCAL DEVELOPMENT (dev) ---"
|
||||
BRANCH_TARGET="dev"
|
||||
fi
|
||||
|
||||
# Checkout branch
|
||||
echo "Ensuring branch: ${BRANCH_TARGET}"
|
||||
git checkout "${BRANCH_TARGET}" 2>/dev/null
|
||||
|
||||
# Pull latest changes
|
||||
echo "Pulling latest changes for branch: $(git rev-parse --abbrev-ref HEAD)"
|
||||
git pull
|
||||
|
||||
# Get git short revision
|
||||
REV=$(git rev-parse --short HEAD)
|
||||
TAG="f0ckm-${TARGET}-${REV}"
|
||||
|
||||
echo "Building image: ${IMAGE_NAME}:${TAG} for environment: ${TARGET} (Cache: ${CACHE_FLAG:-enabled})"
|
||||
|
||||
# Build the image
|
||||
docker build $CACHE_FLAG --build-arg GIT_HASH=${TAG} -f Dockerfile -t ${IMAGE_NAME}:${TAG} .
|
||||
|
||||
# Also tag it as latest
|
||||
echo "Tagging as ${IMAGE_NAME}:latest"
|
||||
docker tag ${IMAGE_NAME}:${TAG} ${IMAGE_NAME}:latest
|
||||
|
||||
# Update .env
|
||||
if grep -q "^F0CKM_TAG=" .env; then
|
||||
sed -i "s/^F0CKM_TAG=.*/F0CKM_TAG=${TAG}/" .env
|
||||
else
|
||||
[ -s .env ] && [ -n "$(tail -c 1 .env)" ] && echo "" >> .env
|
||||
echo "F0CKM_TAG=${TAG}" >> .env
|
||||
fi
|
||||
|
||||
if grep -q "^F0CKM_IMAGE=" .env; then
|
||||
sed -i "s|^F0CKM_IMAGE=.*|F0CKM_IMAGE=${IMAGE_NAME}|" .env
|
||||
else
|
||||
[ -s .env ] && [ -n "$(tail -c 1 .env)" ] && echo "" >> .env
|
||||
echo "F0CKM_IMAGE=${IMAGE_NAME}" >> .env
|
||||
fi
|
||||
|
||||
# Deployment
|
||||
echo "Restarting services with $DOCKER_COMPOSE..."
|
||||
$DOCKER_COMPOSE down
|
||||
$DOCKER_COMPOSE up -d
|
||||
|
||||
# Cleanup
|
||||
echo "Cleaning up old docker resources..."
|
||||
docker system prune -af
|
||||
|
||||
echo "Successfully updated ${TARGET} with tag ${TAG}"
|
||||
Reference in New Issue
Block a user