feat(deploy): add gitea actions deployment pipeline
This commit is contained in:
92
scripts/deploy.sh
Normal file
92
scripts/deploy.sh
Normal file
@@ -0,0 +1,92 @@
|
||||
#!/usr/bin/env bash
|
||||
set -Eeuo pipefail
|
||||
|
||||
usage() {
|
||||
cat <<'EOF'
|
||||
Usage:
|
||||
deploy.sh <component>
|
||||
|
||||
Components:
|
||||
deployment Update the deployment repo and rebuild nginx + app services
|
||||
backend Update the backend repo and rebuild backend + celery services
|
||||
frontend Update the frontend repo and rebuild frontend
|
||||
full Update all three repos and rebuild all app services
|
||||
EOF
|
||||
}
|
||||
|
||||
log() {
|
||||
printf '[deploy] %s\n' "$*"
|
||||
}
|
||||
|
||||
require_git_repo() {
|
||||
local path="$1"
|
||||
if [[ ! -d "$path/.git" ]]; then
|
||||
printf 'Expected git repository at %s\n' "$path" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
sync_repo() {
|
||||
local path="$1"
|
||||
local branch="$2"
|
||||
|
||||
require_git_repo "$path"
|
||||
log "Syncing $path -> origin/$branch"
|
||||
git -C "$path" fetch --prune origin
|
||||
git -C "$path" checkout "$branch"
|
||||
git -C "$path" reset --hard "origin/$branch"
|
||||
}
|
||||
|
||||
compose() {
|
||||
docker compose -f "$DEPLOY_ROOT/docker-compose.yml" "$@"
|
||||
}
|
||||
|
||||
COMPONENT="${1:-}"
|
||||
if [[ -z "$COMPONENT" ]]; then
|
||||
usage
|
||||
exit 1
|
||||
fi
|
||||
|
||||
DEPLOY_ROOT="${DEPLOY_ROOT:-$HOME/qlockify-deployment}"
|
||||
DEPLOY_BRANCH="${DEPLOY_BRANCH:-main}"
|
||||
BACKEND_BRANCH="${BACKEND_BRANCH:-main}"
|
||||
FRONTEND_BRANCH="${FRONTEND_BRANCH:-main}"
|
||||
|
||||
DEPLOY_REPO_PATH="$DEPLOY_ROOT"
|
||||
BACKEND_REPO_PATH="$DEPLOY_ROOT/backend/qlockify-backend-deployment"
|
||||
FRONTEND_REPO_PATH="$DEPLOY_ROOT/frontend/qlockify-frontend-deployment"
|
||||
|
||||
cd "$DEPLOY_ROOT"
|
||||
|
||||
case "$COMPONENT" in
|
||||
deployment)
|
||||
sync_repo "$DEPLOY_REPO_PATH" "$DEPLOY_BRANCH"
|
||||
compose config -q
|
||||
compose up -d --build nginx backend frontend celery celery-beat
|
||||
;;
|
||||
backend)
|
||||
sync_repo "$DEPLOY_REPO_PATH" "$DEPLOY_BRANCH"
|
||||
sync_repo "$BACKEND_REPO_PATH" "$BACKEND_BRANCH"
|
||||
compose config -q
|
||||
compose up -d --build backend celery celery-beat
|
||||
;;
|
||||
frontend)
|
||||
sync_repo "$DEPLOY_REPO_PATH" "$DEPLOY_BRANCH"
|
||||
sync_repo "$FRONTEND_REPO_PATH" "$FRONTEND_BRANCH"
|
||||
compose config -q
|
||||
compose up -d --build frontend
|
||||
;;
|
||||
full)
|
||||
sync_repo "$DEPLOY_REPO_PATH" "$DEPLOY_BRANCH"
|
||||
sync_repo "$BACKEND_REPO_PATH" "$BACKEND_BRANCH"
|
||||
sync_repo "$FRONTEND_REPO_PATH" "$FRONTEND_BRANCH"
|
||||
compose config -q
|
||||
compose up -d --build nginx backend frontend celery celery-beat
|
||||
;;
|
||||
*)
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
compose ps
|
||||
Reference in New Issue
Block a user