From 8ef1a3cff87103b7d10c068611ce839968f76a96 Mon Sep 17 00:00:00 2001 From: Leon Morival Date: Thu, 13 Aug 2026 14:30:46 +0200 Subject: [PATCH] feat: try fix ci cd --- .gitea/workflows/cd.yml | 24 ++++++++++++++++++++++++ .gitea/workflows/ci.yml | 14 ++++++++++++-- README.md | 19 ++++++------------- docker-compose.prod.yml | 6 +----- 4 files changed, 43 insertions(+), 20 deletions(-) diff --git a/.gitea/workflows/cd.yml b/.gitea/workflows/cd.yml index c84ac37..51b466f 100644 --- a/.gitea/workflows/cd.yml +++ b/.gitea/workflows/cd.yml @@ -13,6 +13,9 @@ jobs: if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Configuration SSH run: | mkdir -p ~/.ssh @@ -23,6 +26,27 @@ jobs: -H "${{ secrets.DEPLOY_HOST }}" \ >> ~/.ssh/known_hosts + - name: Synchronisation de la configuration Docker + run: | + ssh \ + -i ~/.ssh/id_ed25519 \ + ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ + "mkdir -p /data/stacks/bowli-api/docker/database-backup" + + scp \ + -i ~/.ssh/id_ed25519 \ + docker-compose.prod.yml \ + ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/data/stacks/bowli-api/docker-compose.yml + + scp \ + -i ~/.ssh/id_ed25519 \ + docker/database-backup/restore-production \ + ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/data/stacks/bowli-api/docker/database-backup/restore-production + + ssh \ + -i ~/.ssh/id_ed25519 \ + ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} \ + "chmod 755 /data/stacks/bowli-api/docker/database-backup/restore-production" - name: 🚀 Deploy Docker run: | diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 0badb1a..9335f92 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -54,7 +54,7 @@ jobs: docker: - name: 🐳 Build & Push Image + name: 🐳 Build & Push Images needs: test if: ${{ github.ref == 'refs/heads/main' }} runs-on: ubuntu-latest @@ -75,7 +75,17 @@ jobs: -t git.leonmorival.xyz/leonm/daily-meal-api:${{ github.sha }} \ . - - name: 📤 Push image + - name: 🏗️ Build database backup image + run: | + docker build \ + -f docker/database-backup/Dockerfile \ + -t git.leonmorival.xyz/leonm/daily-meal-postgres-tools:latest \ + -t git.leonmorival.xyz/leonm/daily-meal-postgres-tools:${{ github.sha }} \ + docker/database-backup + + - name: 📤 Push images run: | docker push git.leonmorival.xyz/leonm/daily-meal-api:latest docker push git.leonmorival.xyz/leonm/daily-meal-api:${{ github.sha }} + docker push git.leonmorival.xyz/leonm/daily-meal-postgres-tools:latest + docker push git.leonmorival.xyz/leonm/daily-meal-postgres-tools:${{ github.sha }} diff --git a/README.md b/README.md index 190c25e..5a742a4 100644 --- a/README.md +++ b/README.md @@ -70,22 +70,15 @@ sauvegarde. ```bash docker compose config -q -docker compose build db-backup -docker compose pull app postgres redis meilisearch +docker compose pull app db-backup postgres redis meilisearch docker compose up -d docker compose ps ``` -`docker compose build db-backup` construit l'image locale contenant `pg_dump`, -`pg_restore`, AWS CLI, le cron et les scripts de `docker/database-backup`. Il faut -l'exécuter au premier déploiement, après une modification de ces scripts ou après -un changement de version de PostgreSQL. - -Pour reconstruire et redémarrer uniquement ce service : - -```bash -docker compose up -d --build db-backup -``` +L'image `db-backup` contient `pg_dump`, `pg_restore`, AWS CLI, le cron et les +scripts de `docker/database-backup`. Elle est construite et publiée dans le +registre par la CI. Le serveur la télécharge avec `docker compose pull` et n'a +donc pas besoin de posséder le code source ni de construire une image localement. ### Mettre à jour l'application @@ -93,7 +86,7 @@ Après avoir changé `IMAGE_TAG` dans `.env` : ```bash docker compose config -q -docker compose pull app +docker compose pull app db-backup docker compose up -d --remove-orphans docker compose ps ``` diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 7910f63..03ccac4 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -27,11 +27,7 @@ x-app-service: &app-service logging: *default-logging x-database-tools: &database-tools - image: daily-meal-postgres-tools:${POSTGRES_VERSION:-15-alpine} - build: - context: ./docker/database-backup - args: - POSTGRES_IMAGE: postgres:${POSTGRES_VERSION:-15-alpine} + image: git.leonmorival.xyz/leonm/daily-meal-postgres-tools:${IMAGE_TAG:?IMAGE_TAG is required} environment: AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:?AWS_ACCESS_KEY_ID is required} AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION:?AWS_DEFAULT_REGION is required}