87 lines
2.5 KiB
Bash
87 lines
2.5 KiB
Bash
#!/usr/bin/env bash
|
|
# Deploy script for AegisOne Service Portal
|
|
# Usage: ./deploy.sh [--skip-tests] [patch|minor|major]
|
|
set -e
|
|
|
|
SKIP_TESTS=false
|
|
BUMP="patch"
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--skip-tests) SKIP_TESTS=true ;;
|
|
patch|minor|major) BUMP="$arg" ;;
|
|
esac
|
|
done
|
|
|
|
DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
|
|
# Gate: run tests before deploy
|
|
if [ "$SKIP_TESTS" = false ]; then
|
|
echo ""
|
|
echo "[CHECK] Running tests..."
|
|
cd "$DIR"
|
|
if curl -sf http://localhost:8000/health > /dev/null 2>&1; then
|
|
if ! pytest -v --tb=short -x; then
|
|
echo ""
|
|
echo "❌ Tests failed. Deploy aborted."
|
|
echo " Fix errors or use --skip-tests to force deploy."
|
|
exit 1
|
|
fi
|
|
echo " ✅ Tests passed"
|
|
else
|
|
echo " ⚠️ Server not reachable at localhost:8000"
|
|
echo " Start the service first, or use --skip-tests"
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
echo "=== AegisOne Service Portal Deploy ==="
|
|
echo ""
|
|
|
|
# Bump version
|
|
cd "$DIR"
|
|
python scripts/bump_version.py "$BUMP" '{"features":["Обновление сервисного портала"],"fixes":["Исправления и улучшения"]}'
|
|
VERSION=$(cat version.txt)
|
|
echo "Version: $VERSION"
|
|
|
|
# Create archive
|
|
cd ..
|
|
ARCHIVE="other/aegisone-py-deploy.tar.gz"
|
|
tar czf "$ARCHIVE" \
|
|
py_service/ --exclude='py_service/__pycache__' --exclude='py_service/.venv' --exclude='py_service/.git' --exclude='py_service/app/__pycache__' --exclude='py_service/app/**/__pycache__' \
|
|
max_bot/ --exclude='max_bot/__pycache__' --exclude='max_bot/.venv'
|
|
echo "Archive created: $ARCHIVE"
|
|
|
|
# Upload
|
|
scp "$ARCHIVE" angel@81.177.141.34:/opt/projects/
|
|
echo "Uploaded to server"
|
|
|
|
# Deploy on server
|
|
ssh angel@81.177.141.34 << 'SSHEOF'
|
|
set -e
|
|
cd /opt/projects
|
|
rm -rf aegisone-py-backup 2>/dev/null || true
|
|
mv aegisone-py aegisone-py-backup 2>/dev/null || true
|
|
mkdir -p aegisone-py
|
|
tar xzf aegisone-py-deploy.tar.gz -C aegisone-py --strip-components=1
|
|
cd aegisone-py
|
|
docker compose down
|
|
docker compose build --no-cache --network host
|
|
docker compose up -d
|
|
echo "Service restarted"
|
|
|
|
# Deploy max_bot
|
|
echo ""
|
|
echo "--- Deploying max_bot ---"
|
|
if [ -d "/opt/projects/max_bot" ]; then
|
|
bash max_bot/max_bot_deploy.sh
|
|
else
|
|
echo "⚠️ max_bot directory not found — skipping"
|
|
fi
|
|
SSHEOF
|
|
|
|
# Commit changelog
|
|
git add py_service/version.txt py_service/CHANGELOG.md
|
|
git diff --cached --quiet || git commit -m "v$VERSION: changelog [skip ci]"
|
|
|
|
echo "=== Deploy complete: v$VERSION ==="
|