diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index a89b607..8b4c1f0 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -8,54 +8,55 @@ on: jobs: deploy: name: Build and Deploy - runs-on: docker-host + runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 - - name: Verify env file exists on host + - name: Setup SSH run: | - if [ ! -f /opt/memento/.env.docker ]; then - echo "ERROR: /opt/memento/.env.docker introuvable sur le serveur." - echo "Créer ce fichier une seule fois manuellement sur 192.168.1.190." - exit 1 - fi - echo "env file OK" + mkdir -p ~/.ssh + echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa + chmod 600 ~/.ssh/id_rsa + ssh-keyscan -H 192.168.1.190 >> ~/.ssh/known_hosts - - name: Sync source to /opt/memento + - name: Sync code to server run: | - mkdir -p /opt/memento - # cp -a préserve les fichiers existants (.env.docker) non trackés par git - cp -a "$GITHUB_WORKSPACE"/. /opt/memento/ - echo "Sync done" + rsync -az --delete \ + --exclude='.git' \ + --exclude='node_modules' \ + --exclude='.next' \ + --exclude='.env*' \ + ./ root@192.168.1.190:/opt/memento/ - name: Build and deploy - working-directory: /opt/memento run: | - set -e - echo "=== Building memento-note ===" - docker compose build memento-note - echo "=== Starting containers ===" - docker compose up -d --remove-orphans - echo "=== Running containers ===" - docker compose ps + ssh root@192.168.1.190 << 'ENDSSH' + set -e + cd /opt/memento + echo "=== Building ===" + docker compose build memento-note + echo "=== Starting ===" + docker compose up -d --remove-orphans + docker compose ps + ENDSSH - - name: Wait for app to be ready + - name: Wait for app to be healthy run: | - echo "Waiting up to 120s for memento-web to respond..." + echo "Waiting up to 120s for memento-web..." for i in $(seq 1 24); do - STATUS=$(docker inspect --format='{{.State.Health.Status}}' memento-web 2>/dev/null || echo "unknown") + STATUS=$(ssh root@192.168.1.190 "docker inspect --format='{{.State.Health.Status}}' memento-web 2>/dev/null || echo unknown") if [ "$STATUS" = "healthy" ]; then - echo "memento-web is healthy after $((i * 5))s" + echo "OK - healthy after $((i * 5))s" exit 0 fi - echo " [$((i * 5))s] status=$STATUS" + echo " [$((i * 5))s] $STATUS" sleep 5 done - echo "Timeout. Last logs:" - docker logs memento-web --tail=30 + echo "Timeout! Derniers logs :" + ssh root@192.168.1.190 "docker logs memento-web --tail=30" exit 1 - - name: Cleanup old images + - name: Cleanup if: always() - run: docker image prune -f + run: ssh root@192.168.1.190 "docker image prune -f" || true