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:
|
steps:
|
||||||
|
|
||||||
# Etape 1 : Validation syntaxique du docker-compose.yml
|
# Etape 1 : Validation syntaxique du docker-compose.yml
|
||||||
|
# Les vars CI (CI_REPO_OWNER, CI_COMMIT_BRANCH) sont injectees automatiquement par Woodpecker
|
||||||
- name: validate
|
- name: validate
|
||||||
image: docker:27-cli
|
image: docker:27-cli
|
||||||
volumes:
|
volumes:
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
environment:
|
environment:
|
||||||
PS_DOMAIN: presta.syoul.fr
|
|
||||||
PS_ADMIN_FOLDER: admin-secure
|
|
||||||
DB_PASSWORD: placeholder
|
DB_PASSWORD: placeholder
|
||||||
DB_ROOT_PASSWORD: placeholder
|
DB_ROOT_PASSWORD: placeholder
|
||||||
PRESTASHOP_ADMIN_EMAIL: placeholder
|
PRESTASHOP_ADMIN_EMAIL: placeholder
|
||||||
PRESTASHOP_ADMIN_PASSWORD: placeholder
|
PRESTASHOP_ADMIN_PASSWORD: placeholder
|
||||||
commands:
|
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"
|
- echo "docker-compose.yml valide"
|
||||||
|
|
||||||
# Etape 2 : Verifications de securite
|
# Etape 2 : Verifications de securite
|
||||||
@@ -51,6 +54,9 @@ steps:
|
|||||||
from_secret: db_password
|
from_secret: db_password
|
||||||
commands:
|
commands:
|
||||||
- env | grep -E "^(PS_DOMAIN|PS_ADMIN_FOLDER|PRESTASHOP_ADMIN_EMAIL|PRESTASHOP_ADMIN_PASSWORD|DB_ROOT_PASSWORD|DB_PASSWORD)=" > .env.deploy
|
- 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)"
|
- echo "Fichier .env.deploy cree ($(wc -c < .env.deploy) octets)"
|
||||||
|
|
||||||
# Etape 3b : Deploiement sur sonic via Docker socket
|
# 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 up -d --remove-orphans
|
||||||
- cd /opt/prestashop && docker compose ps
|
- 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)
|
DOMAIN=$(grep '^PS_DOMAIN=' /opt/prestashop/.env | cut -d= -f2)
|
||||||
|
|
||||||
# --- Certificat TLS (acme.sh via sonic-acme-1) ---
|
# --- Certificat TLS (acme.sh via sonic-acme-1) ---
|
||||||
@@ -101,18 +108,19 @@ steps:
|
|||||||
- /var/run/docker.sock:/var/run/docker.sock
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
commands:
|
commands:
|
||||||
- |
|
- |
|
||||||
|
PROJECT=$(grep '^COMPOSE_PROJECT_NAME=' .env.deploy | cut -d= -f2)
|
||||||
DB_PASS=$(grep '^DB_PASSWORD=' .env.deploy | cut -d= -f2)
|
DB_PASS=$(grep '^DB_PASSWORD=' .env.deploy | cut -d= -f2)
|
||||||
echo "Attente fin installation PrestaShop (ps_configuration)..."
|
echo "Attente fin installation PrestaShop (ps_configuration)..."
|
||||||
MAX=60
|
MAX=60
|
||||||
i=0
|
i=0
|
||||||
until [ $i -ge $MAX ]; do
|
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)
|
"SELECT COUNT(*) FROM prestashop.ps_configuration WHERE name='PS_SSL_ENABLED';" 2>/dev/null || echo 0)
|
||||||
if [ "$READY" -gt "0" ] 2>/dev/null; then
|
if [ "$READY" -gt "0" ] 2>/dev/null; then
|
||||||
echo "Base prete, activation SSL..."
|
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');"
|
"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"
|
echo "SSL active dans DB, cache efface"
|
||||||
break
|
break
|
||||||
fi
|
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:
|
services:
|
||||||
prestashop:
|
prestashop:
|
||||||
image: prestashop/prestashop:8-apache
|
image: prestashop/prestashop:8-apache
|
||||||
container_name: prestashop
|
container_name: ${COMPOSE_PROJECT_NAME:-syoul-main-prestashop}-app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
depends_on:
|
depends_on:
|
||||||
db:
|
db:
|
||||||
@@ -41,7 +45,7 @@ services:
|
|||||||
|
|
||||||
db:
|
db:
|
||||||
image: mariadb:10.11
|
image: mariadb:10.11
|
||||||
container_name: prestashop-db
|
container_name: ${COMPOSE_PROJECT_NAME:-syoul-main-prestashop}-db
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
|
||||||
|
|||||||
Reference in New Issue
Block a user