Files
ai-training/scripts/deploy.sh
T
Oleksandr Bezdieniezhnykh aeb7f8ca8c Update autopilot workflow and documentation for project cycle completion
- Modified the existing-code workflow to automatically loop back to New Task after project completion without user confirmation.
- Updated the autopilot state to reflect the current step as `done` and status as `completed`.
- Clarified the deployment status report by specifying non-deployed services and their purposes.

These changes enhance the automation of task management and improve documentation clarity.
2026-03-29 05:02:22 +03:00

106 lines
2.3 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
usage() {
cat <<EOF
Usage: $(basename "$0") [OPTIONS]
Azaion AI Training — Deployment orchestrator.
Options:
--rollback Rollback to previous image tags
--local Run locally (skip SSH, default if DEPLOY_HOST is unset)
--help Show this help message
Environment:
DEPLOY_HOST Target server for remote deployment (optional)
DEPLOY_USER SSH user (default: deploy)
EOF
exit 0
}
ROLLBACK=false
LOCAL=false
for arg in "$@"; do
case "$arg" in
--rollback) ROLLBACK=true ;;
--local) LOCAL=true ;;
--help) usage ;;
*) echo "Unknown option: $arg"; usage ;;
esac
done
if [[ -f "$PROJECT_ROOT/.env" ]]; then
set -a
source "$PROJECT_ROOT/.env"
set +a
fi
DEPLOY_HOST="${DEPLOY_HOST:-}"
DEPLOY_USER="${DEPLOY_USER:-deploy}"
if [[ -z "$DEPLOY_HOST" ]]; then
LOCAL=true
fi
run_cmd() {
if [[ "$LOCAL" == true ]]; then
bash -c "$1"
else
ssh "${DEPLOY_USER}@${DEPLOY_HOST}" "$1"
fi
}
run_script() {
local script="$1"
shift
if [[ "$LOCAL" == true ]]; then
bash "$SCRIPT_DIR/$script" "$@"
else
ssh "${DEPLOY_USER}@${DEPLOY_HOST}" "cd /opt/azaion-training && bash scripts/$script $*"
fi
}
echo "=== Azaion AI Training — Deploy ==="
echo "Mode: $(if $LOCAL; then echo 'local'; else echo "remote ($DEPLOY_HOST)"; fi)"
echo "Action: $(if $ROLLBACK; then echo 'rollback'; else echo 'deploy'; fi)"
echo ""
"$SCRIPT_DIR/generate-config.sh"
if [[ "$ROLLBACK" == true ]]; then
PREV_TAGS="$SCRIPT_DIR/.previous-tags"
if [[ ! -f "$PREV_TAGS" ]]; then
echo "ERROR: No previous tags found at $PREV_TAGS — cannot rollback"
exit 1
fi
echo "Rolling back to previous image tags..."
set -a
source "$PREV_TAGS"
set +a
fi
echo "[1/4] Pulling images..."
run_script pull-images.sh
echo "[2/4] Stopping services..."
run_script stop-services.sh
echo "[3/4] Starting services..."
run_script start-services.sh
echo "[4/4] Checking health..."
if run_script health-check.sh; then
echo ""
echo "=== Deploy successful ==="
else
echo ""
echo "=== Health check FAILED ==="
echo "Run: $0 --rollback"
exit 1
fi