diff --git a/.woodpecker.yml b/.woodpecker.yml index 277779d..cfa0813 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -1,11 +1,11 @@ when: - branch: main - event: push + - branch: main + event: push steps: # Etape 1 : Validation syntaxique du docker-compose.yml - validate: + - name: validate image: docker:27-cli volumes: - /var/run/docker.sock:/var/run/docker.sock @@ -21,7 +21,7 @@ steps: - echo "docker-compose.yml valide" # Etape 2 : Verifications de securite - security-check: + - name: security-check image: alpine:3.20 commands: - | @@ -33,7 +33,7 @@ steps: - echo "Verifications de securite OK" # Etape 3 : Deploiement sur sonic via Docker socket - deploy: + - name: deploy image: docker:27-cli environment: PS_DOMAIN: @@ -53,16 +53,7 @@ steps: - /opt/prestashop:/opt/prestashop commands: # 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 + - printf 'PS_DOMAIN=%s\nPS_ADMIN_FOLDER=%s\nPRESTASHOP_ADMIN_EMAIL=%s\nPRESTASHOP_ADMIN_PASSWORD=%s\nDB_ROOT_PASSWORD=%s\nDB_PASSWORD=%s\n' "${PS_DOMAIN}" "${PS_ADMIN_FOLDER}" "${PRESTASHOP_ADMIN_EMAIL}" "${PRESTASHOP_ADMIN_PASSWORD}" "${DB_ROOT_PASSWORD}" "${DB_PASSWORD}" > /opt/prestashop/.env - chmod 600 /opt/prestashop/.env # Deployer - cp docker-compose.yml /opt/prestashop/docker-compose.yml @@ -71,20 +62,18 @@ steps: - cd /opt/prestashop && docker compose ps # Etape 4 : Healthcheck post-deploiement - # PS_DOMAIN n'est pas sensible, passe en valeur directe pour eviter - # les problemes d'injection de secret dans les blocs multilignes - healthcheck: + - name: healthcheck image: curlimages/curl:8.11.0 environment: PS_DOMAIN: from_secret: PS_DOMAIN commands: - | - TARGET="http://${PS_DOMAIN}" if [ -z "${PS_DOMAIN}" ]; then echo "ERREUR: PS_DOMAIN non defini, verifier le secret Woodpecker" exit 1 fi + TARGET="http://${PS_DOMAIN}" echo "Healthcheck sur ${TARGET} (max 10 minutes)..." MAX=60 i=0 @@ -102,10 +91,10 @@ steps: exit 1 # Notification en cas d'echec - notify-failure: + - name: notify-failure image: alpine:3.20 commands: - 'echo "ECHEC pipeline #${CI_BUILD_NUMBER} sur commit ${CI_COMMIT_SHA}"' - 'echo "Branche: ${CI_COMMIT_BRANCH}"' when: - status: failure + - status: failure