diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 543687d..31bfcd9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -26,7 +26,7 @@ deploy-job: - deploiement script: - | - set -e + set -x echo "Déploiement sur Portainer..." echo "Utilisation du token API de Portainer..." @@ -34,46 +34,26 @@ deploy-job: if [ -z "$PORTAINER_API_KEY" ]; then echo "Erreur : PORTAINER_API_KEY non définie."; exit 1; fi if [ -z "$PORTAINER_URL" ]; then echo "Erreur : PORTAINER_URL non définie."; exit 1; fi if [ -z "$STACK_ID" ]; then echo "Erreur : STACK_ID non définie."; exit 1; fi - if [ -z "$ENDPOINT_ID" ]; then echo "Erreur : ENDPOINT_ID non définie."; exit 1; fi - # Affichage des variables (non sensibles) + # Affichage des variables (sauf les sensibles) echo "PORTAINER_URL : $PORTAINER_URL" echo "STACK_ID : $STACK_ID" - echo "ENDPOINT_ID : $ENDPOINT_ID" - - echo "Lecture du fichier docker-compose.yml..." - - # Vérifier que docker-compose.yml existe - if [ ! -f docker-compose.yml ]; then - echo "Erreur : Le fichier docker-compose.yml n'existe pas." - exit 1 - fi - - # Lire le contenu du fichier docker-compose.yml - STACK_FILE_CONTENT=$(cat docker-compose.yml) - - # Échapper les nouvelles lignes pour le JSON - STACK_FILE_CONTENT_JSON=$(echo "$STACK_FILE_CONTENT" | awk '{printf "%s\\n", $0}') - - # Construire le corps de la requête JSON - DATA="{\"stackFileContent\":\"$STACK_FILE_CONTENT_JSON\"}" echo "Déploiement de la stack sur Portainer..." - # Exécuter la requête pour mettre à jour la stack - RESPONSE=$(curl -s -k -w "%{http_code}" -X POST \ + RESPONSE=$(curl -v -X PUT \ -H "Authorization: Bearer $PORTAINER_API_KEY" \ -H "Content-Type: application/json" \ - -d "$DATA" \ - "https://$PORTAINER_URL/api/stacks/$STACK_ID/update?endpointId=$ENDPOINT_ID") + -d '{"Prune": true}' \ + https://$PORTAINER_URL/api/stacks/$STACK_ID/deploy 2>&1) - # Extraire le code HTTP de la réponse - HTTP_CODE="${RESPONSE: -3}" - BODY="${RESPONSE::-3}" + HTTP_CODE=$(echo "$RESPONSE" | grep "< HTTP/" | awk '{print $3}') + + echo "Réponse de l'API :" + echo "$RESPONSE" if [ "$HTTP_CODE" != "200" ]; then echo "Erreur : Échec du déploiement. Code HTTP : $HTTP_CODE" - echo "Réponse de l'API : $BODY" exit 1 fi