diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index f9d901a..750b7a9 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -1,9 +1,11 @@ name: Deploy Amap + on: push: branches: - main workflow_dispatch: + jobs: deploy: runs-on: service-updates @@ -11,15 +13,70 @@ jobs: steps: - name: Checkout repository uses: actions/checkout@v4 - - name: Test backend + + - name: Setup Python uses: actions/setup-python@v6 with: python-version: "3.12" - - run: | - python -m pip install --upgrade pip - pip install -r backend/requirements.txt - pytest -sv - - name: Build & deploy + + - name: Install dependencies and run tests run: | - docker compose -f docker-compose.yaml up -d --build - docker compose -f docker-compose.yaml exec backend alembic upgrade head + python -m venv .venv + .venv/bin/python -m pip install --upgrade pip + .venv/bin/python -m pip install -r backend/requirements.txt + .venv/bin/python -m pytest -sv + + - name: Configure SSH + env: + DEPLOY_SSH_PRIVATE_KEY: ${{ secrets.DEPLOY_SSH_PRIVATE_KEY }} + run: | + test -n "$DEPLOY_SSH_PRIVATE_KEY" + + install -d -m 700 "$HOME/.ssh" + printf '%s\n' "$DEPLOY_SSH_PRIVATE_KEY" > "$HOME/.ssh/id_ed25519" + chmod 600 "$HOME/.ssh/id_ed25519" + + - name: Check Amap VM connection + run: | + ssh \ + -o StrictHostKeyChecking=accept-new \ + amap@192.168.1.96 \ + "echo Connected to Amap VM" + + - name: Create backup + run: | + ssh \ + -o StrictHostKeyChecking=accept-new \ + amap@192.168.1.96 \ + "sudo systemctl start create-backup.service" + + - name: Copy application to Amap VM + run: | + tar \ + --exclude=.git \ + --exclude=.venv \ + -czf - . | + ssh \ + -o StrictHostKeyChecking=accept-new \ + amap@192.168.1.96 \ + "mkdir -p /home/amap/service && + tar -xzf - -C /home/amap/service" + + - name: Build and deploy on Amap VM + run: | + ssh \ + -o StrictHostKeyChecking=accept-new \ + amap@192.168.1.96 \ + "cd /home/amap/service && + sudo docker compose -f docker-compose.yaml up -d --build && + sudo docker compose -f docker-compose.yaml exec -T backend alembic upgrade head" + + - name: Verify deployment + run: | + curl \ + --fail \ + --silent \ + --show-error \ + --location \ + --max-time 60 \ + https://amap.aldon.fr