From acb784edbb168f38a4b81f4024da196f2141dd5e Mon Sep 17 00:00:00 2001 From: sepehr Date: Sat, 25 Apr 2026 20:51:35 +0200 Subject: [PATCH] ci: fix deploy workflow - use GITHUB_WORKSPACE env var and robust healthcheck Made-with: Cursor --- .gitea/workflows/deploy.yaml | 50 +++++++++++++++++++++--------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/deploy.yaml b/.gitea/workflows/deploy.yaml index f47a49c..a89b607 100644 --- a/.gitea/workflows/deploy.yaml +++ b/.gitea/workflows/deploy.yaml @@ -8,44 +8,52 @@ on: jobs: deploy: name: Build and Deploy - # "docker-host" label = runs directly on the host (192.168.1.190) runs-on: docker-host steps: - name: Checkout code uses: actions/checkout@v4 - - name: Sync code to deploy directory + - name: Verify env file exists on host run: | - rsync -a --delete \ - --exclude '.git' \ - --exclude 'node_modules' \ - --exclude '.next' \ - --exclude 'memento-note/node_modules' \ - --exclude 'mcp-server/node_modules' \ - ${{ github.workspace }}/ /opt/memento/ + 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" + + - name: Sync source to /opt/memento + 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" - name: Build and deploy working-directory: /opt/memento run: | set -e - docker compose build --parallel + echo "=== Building memento-note ===" + docker compose build memento-note + echo "=== Starting containers ===" docker compose up -d --remove-orphans + echo "=== Running containers ===" + docker compose ps - - name: Wait for healthchecks - working-directory: /opt/memento + - name: Wait for app to be ready run: | - echo "Waiting for containers..." - for i in $(seq 1 30); do - UNHEALTHY=$(docker compose ps --format '{{.Status}}' | grep -cv "healthy" || true) - if [ "$UNHEALTHY" -eq 0 ]; then - echo "All containers healthy!" - docker compose ps + echo "Waiting up to 120s for memento-web to respond..." + for i in $(seq 1 24); do + STATUS=$(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" exit 0 fi - sleep 2 + echo " [$((i * 5))s] status=$STATUS" + sleep 5 done - echo "Timeout waiting for healthchecks" - docker compose ps + echo "Timeout. Last logs:" + docker logs memento-web --tail=30 exit 1 - name: Cleanup old images