diff --git a/.woodpecker.yml b/.woodpecker.yml index 7367332..c0a4eb7 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -11,6 +11,7 @@ steps: - /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 @@ -34,16 +35,37 @@ steps: # Etape 3 : Deploiement sur sonic via Docker socket deploy: image: docker:27-cli + environment: + PS_DOMAIN: + from_secret: PS_DOMAIN + PS_ADMIN_FOLDER: + from_secret: PS_ADMIN_FOLDER + PRESTASHOP_ADMIN_EMAIL: + from_secret: PRESTASHOP_ADMIN_EMAIL + PRESTASHOP_ADMIN_PASSWORD: + from_secret: PRESTASHOP_ADMIN_PASSWORD + DB_ROOT_PASSWORD: + from_secret: DB_ROOT_PASSWORD + DB_PASSWORD: + from_secret: DB_PASSWORD volumes: - # Acces au Docker socket de l'hote (sonic) - /var/run/docker.sock:/var/run/docker.sock - # Dossier de deploiement sur l'hote (contient le .env) - /opt/prestashop:/opt/prestashop commands: - # Copier le docker-compose.yml vers le dossier de deploiement + # Generer le .env sur le serveur a partir des secrets Woodpecker + # Woodpecker est la source de verite unique pour tous les secrets + - | + cat > /opt/prestashop/.env << EOF + PS_DOMAIN=${PS_DOMAIN} + PS_ADMIN_FOLDER=${PS_ADMIN_FOLDER} + PRESTASHOP_ADMIN_EMAIL=${PRESTASHOP_ADMIN_EMAIL} + PRESTASHOP_ADMIN_PASSWORD=${PRESTASHOP_ADMIN_PASSWORD} + DB_ROOT_PASSWORD=${DB_ROOT_PASSWORD} + DB_PASSWORD=${DB_PASSWORD} + EOF + - chmod 600 /opt/prestashop/.env + # Deployer - cp docker-compose.yml /opt/prestashop/docker-compose.yml - # Lancer/mettre a jour la stack depuis le dossier de deploiement - # (le .env doit deja etre present dans /opt/prestashop/.env sur sonic) - cd /opt/prestashop && docker compose pull - cd /opt/prestashop && docker compose up -d --remove-orphans - cd /opt/prestashop && docker compose ps @@ -55,16 +77,22 @@ steps: PS_DOMAIN: from_secret: PS_DOMAIN commands: - - echo "Attente du demarrage de PrestaShop..." - - sleep 90 - | - HTTP_CODE=$(curl -sSo /dev/null -w "%{http_code}" "http://${PS_DOMAIN}" || echo "000") - echo "HTTP Status: ${HTTP_CODE}" - if [ "${HTTP_CODE}" != "200" ] && [ "${HTTP_CODE}" != "301" ] && [ "${HTTP_CODE}" != "302" ]; then - echo "ERREUR: PrestaShop ne repond pas correctement (code ${HTTP_CODE})" - exit 1 - fi - echo "PrestaShop repond correctement" + echo "Attente du demarrage de PrestaShop (max 6 minutes)..." + MAX=36 + i=0 + until [ $i -ge $MAX ]; do + HTTP_CODE=$(curl -sSo /dev/null -w "%{http_code}" "http://${PS_DOMAIN}" 2>/dev/null || echo "000") + echo "Tentative $((i+1))/${MAX} - HTTP ${HTTP_CODE}" + if [ "${HTTP_CODE}" = "200" ] || [ "${HTTP_CODE}" = "301" ] || [ "${HTTP_CODE}" = "302" ]; then + echo "PrestaShop repond correctement" + exit 0 + fi + i=$((i+1)) + sleep 10 + done + echo "ERREUR: PrestaShop ne repond pas apres 6 minutes" + exit 1 # Notification en cas d'echec notify-failure: