stages: - build - test - deploy build-job: stage: build tags: - deploiement script: - echo "Compilation du code..." # Ajoutez vos commandes de build ici test-job: stage: test tags: - deploiement script: - echo "Exécution des tests..." # Ajoutez vos commandes de test ici deploy-job: stage: deploy script: - set -x - echo "Déploiement sur Portainer..." - echo "Utilisation du token API de Portainer..." # Vérifier que la variable PORTAINER_API_KEY est définie (sans l'afficher) - if [ -z "$PORTAINER_API_KEY" ]; then echo "Erreur : La variable PORTAINER_API_KEY n'est pas définie."; exit 1; fi # Vérifier que PORTAINER_URL et STACK_ID sont définis - if [ -z "$PORTAINER_URL" ]; then echo "Erreur : La variable PORTAINER_URL n'est pas définie."; exit 1; fi - if [ -z "$STACK_ID" ]; then echo "Erreur : La variable STACK_ID n'est pas définie."; exit 1; fi # Optionnel : Afficher les variables (sans afficher les données sensibles) - echo "PORTAINER_URL : $PORTAINER_URL" - echo "STACK_ID : $STACK_ID" - echo "Déploiement de la stack sur Portainer..." # Exécuter la commande curl avec l'option -v pour avoir plus de détails - | RESPONSE=$(curl -v -X PUT \ -H "Authorization: Bearer $PORTAINER_API_KEY" \ -H "Content-Type: application/json" \ -d '{"Prune": true}' \ http://$PORTAINER_URL/api/stacks/$STACK_ID/deploy 2>&1) # Extraire le code HTTP de la réponse HTTP_CODE=$(echo "$RESPONSE" | grep "< HTTP/" | awk '{print $3}') # Afficher la réponse pour le débogage echo "Réponse de l'API :" echo "$RESPONSE" if [ "$HTTP_CODE" != "200" ]; then echo "Erreur : Échec du déploiement. Code HTTP : $HTTP_CODE" exit 1 fi - echo "Déploiement terminé avec succès."