From 803a78cd7118607c202f2a84394223c4c7d885c7 Mon Sep 17 00:00:00 2001 From: Andil Date: Tue, 4 Aug 2026 20:43:14 +0000 Subject: [PATCH] refactor: align branches with dev preprod and production --- Jenkinsfile | 75 +++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 64 insertions(+), 11 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 5063b6b..e413def 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -31,30 +31,49 @@ pipeline { script { env.IMAGE_TAG = "${env.BRANCH_NAME}-${env.BUILD_NUMBER}" - if (env.BRANCH_NAME == 'main') { + /* + * Stratégie de branches : + * + * feature/* -> CI uniquement + * develop -> DEV automatique + * release-* -> PREPROD automatique + * main -> PROD avec validation manuelle + */ + + if (env.BRANCH_NAME == 'develop') { env.DEPLOY_ENABLED = 'true' env.DEPLOY_ENV = 'DEV' + env.COMPOSE_FILE = 'deploy/dev/docker-compose.yml' env.COMPOSE_PROJECT = 'tiptop-dev' env.DEPLOY_NETWORK = 'tiptop-dev' + env.FRONTEND_API_URL = 'http://192.168.1.23:5001' - } else if (env.BRANCH_NAME == 'develop') { + + } else if (env.BRANCH_NAME.startsWith('release-')) { env.DEPLOY_ENABLED = 'true' env.DEPLOY_ENV = 'PREPROD' + env.COMPOSE_FILE = 'deploy/preprod/docker-compose.yml' env.COMPOSE_PROJECT = 'tiptop-preprod' env.DEPLOY_NETWORK = 'tiptop-preprod' + env.FRONTEND_API_URL = 'http://192.168.1.23:5002' - } else if (env.BRANCH_NAME.startsWith('release-')) { + + } else if (env.BRANCH_NAME == 'main') { env.DEPLOY_ENABLED = 'true' env.DEPLOY_ENV = 'PROD' + env.COMPOSE_FILE = 'deploy/prod/docker-compose.yml' env.COMPOSE_PROJECT = 'tiptop-prod' env.DEPLOY_NETWORK = 'tiptop-prod' + env.FRONTEND_API_URL = 'http://192.168.1.23:5003' + } else { env.DEPLOY_ENABLED = 'false' env.DEPLOY_ENV = 'CI uniquement' + env.COMPOSE_FILE = '' env.COMPOSE_PROJECT = '' env.DEPLOY_NETWORK = '' @@ -101,12 +120,16 @@ pipeline { for i in $(seq 1 30); do if docker exec "${CI_DATABASE}" \ - pg_isready -U tiptop_ci -d the_tip_top_ci; then + pg_isready \ + -U tiptop_ci \ + -d the_tip_top_ci; then + echo "PostgreSQL CI est prêt." break fi if [ "$i" -eq 30 ]; then + echo "PostgreSQL CI ne répond pas." docker logs "${CI_DATABASE}" exit 1 fi @@ -211,8 +234,10 @@ pipeline { steps { timeout(time: 15, unit: 'MINUTES') { - input message: "Déployer ${IMAGE_TAG} en production ?", - ok: "Déployer" + input( + message: "Déployer ${IMAGE_TAG} en production ?", + ok: "Déployer" + ) } } } @@ -227,6 +252,9 @@ pipeline { steps { sh ''' echo "Déploiement de ${BRANCH_NAME} vers ${DEPLOY_ENV}" + echo "Image backend : ${BACKEND_IMAGE}:${IMAGE_TAG}" + echo "Image frontend : ${FRONTEND_IMAGE}:${IMAGE_TAG}" + echo "Compose : ${COMPOSE_FILE}" REGISTRY="${REGISTRY}" \ IMAGE_TAG="${IMAGE_TAG}" \ @@ -243,17 +271,27 @@ pipeline { if docker run --rm \ --network "${DEPLOY_NETWORK}" \ curlimages/curl:8.12.1 \ - -fsS http://backend:5000/ >/dev/null; then + -fsS \ + http://backend:5000/ \ + >/dev/null; then echo "Backend ${DEPLOY_ENV} opérationnel." break fi if [ "$i" -eq 30 ]; then + echo "Le backend ${DEPLOY_ENV} ne répond pas." + docker compose \ -p "${COMPOSE_PROJECT}" \ -f "${COMPOSE_FILE}" \ - logs --tail=150 + ps + + docker compose \ + -p "${COMPOSE_PROJECT}" \ + -f "${COMPOSE_FILE}" \ + logs \ + --tail=150 exit 1 fi @@ -261,10 +299,14 @@ pipeline { sleep 5 done + echo "Vérification du frontend ${DEPLOY_ENV}..." + docker run --rm \ --network "${DEPLOY_NETWORK}" \ curlimages/curl:8.12.1 \ - -fsS http://frontend/ >/dev/null + -fsS \ + http://frontend/ \ + >/dev/null echo "Frontend ${DEPLOY_ENV} opérationnel." ''' @@ -281,11 +323,22 @@ pipeline { } success { - echo "Pipeline réussi pour ${BRANCH_NAME}. Environnement : ${DEPLOY_ENV}. Version : ${IMAGE_TAG}" + echo """ + Pipeline réussi. + + Branche : ${BRANCH_NAME} + Environnement : ${DEPLOY_ENV} + Version : ${IMAGE_TAG} + """ } failure { - echo "Pipeline en échec pour ${BRANCH_NAME}. Consulte la Console Output." + echo """ + Pipeline en échec. + + Branche : ${BRANCH_NAME} + Environnement : ${DEPLOY_ENV} + """ } } }