feat: COMPOSE_PROJECT_NAME depuis vars CI Woodpecker
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
- 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 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user