ci: ne déploie que le commit testé, après une CI verte
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.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user