From 8cf7c4b7ca1b400d345f09a2d823bc94f8b644f9 Mon Sep 17 00:00:00 2001 From: syoul Date: Tue, 17 Mar 2026 23:03:31 +0100 Subject: [PATCH] feat: COMPOSE_PROJECT_NAME depuis vars CI Woodpecker - COMPOSE_PROJECT_NAME construit dynamiquement : CI_REPO_OWNER-CI_COMMIT_BRANCH-prestashop -> plus de valeur en dur dans le fichier - validate : PS_DOMAIN/PS_ADMIN_FOLDER/COMPOSE_PROJECT_NAME calcules dans commands via les vars CI injectees automatiquement par Woodpecker - PS_DOMAIN placeholder remplace presta.syoul.fr hardcode dans validate Co-Authored-By: Claude Sonnet 4.6 --- .woodpecker.yml | 20 ++++++++++++++------ docker-compose.yml | 8 ++++++-- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/.woodpecker.yml b/.woodpecker.yml index d0bcdd6..054c129 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -5,19 +5,22 @@ when: steps: # Etape 1 : Validation syntaxique du docker-compose.yml + # Les vars CI (CI_REPO_OWNER, CI_COMMIT_BRANCH) sont injectees automatiquement par Woodpecker - name: validate image: docker:27-cli volumes: - /var/run/docker.sock:/var/run/docker.sock environment: - PS_DOMAIN: presta.syoul.fr - PS_ADMIN_FOLDER: admin-secure DB_PASSWORD: placeholder DB_ROOT_PASSWORD: placeholder PRESTASHOP_ADMIN_EMAIL: placeholder PRESTASHOP_ADMIN_PASSWORD: placeholder commands: - - docker compose config --quiet + - | + export COMPOSE_PROJECT_NAME="${CI_REPO_OWNER}-${CI_COMMIT_BRANCH}-prestashop" + export PS_DOMAIN="validate.example.com" + export PS_ADMIN_FOLDER="admin-secure" + docker compose config --quiet - echo "docker-compose.yml valide" # Etape 2 : Verifications de securite @@ -51,6 +54,9 @@ steps: from_secret: db_password commands: - env | grep -E "^(PS_DOMAIN|PS_ADMIN_FOLDER|PRESTASHOP_ADMIN_EMAIL|PRESTASHOP_ADMIN_PASSWORD|DB_ROOT_PASSWORD|DB_PASSWORD)=" > .env.deploy + # COMPOSE_PROJECT_NAME : construit depuis les vars CI Woodpecker (pas de secret necessaire) + # Convention user-env-project : CI_REPO_OWNER-CI_COMMIT_BRANCH-prestashop + - echo "COMPOSE_PROJECT_NAME=${CI_REPO_OWNER}-${CI_COMMIT_BRANCH}-prestashop" >> .env.deploy - echo "Fichier .env.deploy cree ($(wc -c < .env.deploy) octets)" # Etape 3b : Deploiement sur sonic via Docker socket @@ -70,6 +76,7 @@ steps: - cd /opt/prestashop && docker compose up -d --remove-orphans - cd /opt/prestashop && docker compose ps - | + PROJECT=$(grep '^COMPOSE_PROJECT_NAME=' /opt/prestashop/.env | cut -d= -f2) DOMAIN=$(grep '^PS_DOMAIN=' /opt/prestashop/.env | cut -d= -f2) # --- Certificat TLS (acme.sh via sonic-acme-1) --- @@ -101,18 +108,19 @@ steps: - /var/run/docker.sock:/var/run/docker.sock commands: - | + PROJECT=$(grep '^COMPOSE_PROJECT_NAME=' .env.deploy | cut -d= -f2) DB_PASS=$(grep '^DB_PASSWORD=' .env.deploy | cut -d= -f2) echo "Attente fin installation PrestaShop (ps_configuration)..." MAX=60 i=0 until [ $i -ge $MAX ]; do - READY=$(docker exec prestashop-db mysql -uprestashop -p"$DB_PASS" -se \ + READY=$(docker exec "${PROJECT}-db" mysql -uprestashop -p"$DB_PASS" -se \ "SELECT COUNT(*) FROM prestashop.ps_configuration WHERE name='PS_SSL_ENABLED';" 2>/dev/null || echo 0) if [ "$READY" -gt "0" ] 2>/dev/null; then echo "Base prete, activation SSL..." - docker exec prestashop-db mysql -uprestashop -p"$DB_PASS" prestashop -e \ + docker exec "${PROJECT}-db" mysql -uprestashop -p"$DB_PASS" prestashop -e \ "UPDATE ps_configuration SET value='1' WHERE name IN ('PS_SSL_ENABLED','PS_SSL_ENABLED_EVERYWHERE');" - docker exec prestashop rm -rf /var/www/html/var/cache/prod/ 2>/dev/null || true + docker exec "${PROJECT}-app" rm -rf /var/www/html/var/cache/prod/ 2>/dev/null || true echo "SSL active dans DB, cache efface" break fi diff --git a/docker-compose.yml b/docker-compose.yml index 9b35329..b0e7c94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,11 @@ +# Convention de nommage : user-env-project (ex: syoul-main-prestashop) +# Permet plusieurs instances en parallele (prod/test/multi-user) sans collision +name: ${COMPOSE_PROJECT_NAME:-syoul-main-prestashop} + services: prestashop: image: prestashop/prestashop:8-apache - container_name: prestashop + container_name: ${COMPOSE_PROJECT_NAME:-syoul-main-prestashop}-app restart: unless-stopped depends_on: db: @@ -41,7 +45,7 @@ services: db: image: mariadb:10.11 - container_name: prestashop-db + container_name: ${COMPOSE_PROJECT_NAME:-syoul-main-prestashop}-db restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}