From d54cd963f126e3d325f818d7c61624b1c8bbf526 Mon Sep 17 00:00:00 2001 From: Johan LEROY Date: Wed, 23 Sep 2026 09:16:15 +0200 Subject: [PATCH] =?UTF-8?q?ci:=20ne=20d=C3=A9ploie=20que=20le=20commit=20t?= =?UTF-8?q?est=C3=A9,=20apr=C3=A8s=20une=20CI=20verte?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit deploy.yml partait à chaque push sur dev ou main, CI verte ou non, et déployait la pointe de branche du moment plutôt que le commit poussé. Il devient un workflow appelé par ci.yml, après « CI ok », sur les seuls push. Il aligne le dossier de l'environnement sur GITHUB_SHA. Toujours aucun déclencheur pull_request (ADR 0009) ; workflow_dispatch reste disponible pour redéployer à la main. --- .github/workflows/ci.yml | 5 +++++ .github/workflows/deploy.yml | 23 ++++++++++++----------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fc4c99f..4f81574 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -193,3 +193,8 @@ jobs: exit 1 fi + deploy: + name: Déploiement + needs: ci-ok + if: ${{ !cancelled() && needs.ci-ok.result == 'success' && github.event_name == 'push' }} + uses: ./.github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 411e164..05db884 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,27 +1,28 @@ # Pourquoi : le runner tourne sur la VM ENI, adresse privée que les runners hébergés par GitHub # ne joignent pas, et travaille dans un dossier stable par environnement plutôt que dans son # espace de travail : `.env`, certificats et volumes y survivent d'un déploiement à l'autre. +# Pourquoi : appelé par ci.yml une fois « CI ok » vert, jamais directement par un push, et il +# déploie `GITHUB_SHA`, le commit testé, pas la pointe de branche du moment (ADR 0014). # Piège : jamais de déclencheur `pull_request` ici. Sur un dépôt public, une PR de fork # exécuterait son code sur la machine de production (ADR 0009) - job deploy. name: Déploiement on: - push: - branches: [dev, main] + workflow_call: workflow_dispatch: permissions: contents: read -concurrency: - group: deploy-${{ github.ref_name }} - cancel-in-progress: false - jobs: deploy: + name: Déploie sur la VM runs-on: [self-hosted, linux, eni-g3] timeout-minutes: 30 + concurrency: + group: deploy-${{ github.ref_name }} + cancel-in-progress: false environment: name: ${{ github.ref_name == 'main' && 'prod' || 'rec' }} url: ${{ github.ref_name == 'main' && 'https://enervision.local' || 'https://rec.enervision.local:8443' }} @@ -29,22 +30,22 @@ jobs: ENVIRONNEMENT: ${{ github.ref_name == 'main' && 'prod' || 'rec' }} PORT_HTTPS: ${{ github.ref_name == 'main' && '443' || '8443' }} steps: - - name: Aligner le dossier de l'environnement sur la branche poussée + - name: Aligne le dossier de l'environnement sur le commit testé run: | cd "/srv/enervision/${ENVIRONNEMENT}" git fetch --quiet origin "${GITHUB_REF_NAME}" git checkout --quiet "${GITHUB_REF_NAME}" - git reset --quiet --hard "origin/${GITHUB_REF_NAME}" + git reset --quiet --hard "${GITHUB_SHA}" git log -1 --format='%h %s' - - name: Reconstruire et redémarrer la stack + - name: Reconstruit et redémarre la stack run: | cd "/srv/enervision/${ENVIRONNEMENT}" make stack-up - - name: Attendre que l'API réponde derrière le proxy + - name: Attend que l'API réponde derrière le proxy run: | - for tentative in $(seq 1 36); do + for _ in $(seq 1 36); do if curl --fail --silent --insecure "https://localhost:${PORT_HTTPS}/api/v1/health/ready"; then exit 0 fi