manga-server/.gitlab-ci.yml
2024-10-05 10:07:31 +02:00

36 lines
1.8 KiB
YAML

stages:
- deploy
deploy_to_portainer:
stage: deploy
image:
name: curlimages/curl:latest
entrypoint: [""]
script:
- echo "Installation de jq"
- curl -L -o /usr/bin/jq https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
- chmod +x /usr/bin/jq
- echo "Début du déploiement vers Portainer"
- echo "Téléchargement du fichier docker-compose.yml depuis le dépôt"
- 'curl -s -H "PRIVATE-TOKEN: $CI_JOB_TOKEN" -o docker-compose.yml "$CI_PROJECT_URL/raw/$CI_COMMIT_REF_NAME/docker-compose.yml"'
- echo "Mise à jour ou création de la stack dans Portainer"
- |
STACK_ID=$(curl -s -H "Authorization: Bearer $PORTAINER_TOKEN" "$PORTAINER_URL/stacks?filters=%7B%22Name%22%3A%5B%22$STACK_NAME%22%5D%7D" | jq -r '.[0].Id')
if [ "$STACK_ID" = "null" ] || [ -z "$STACK_ID" ]; then
echo "La stack n'existe pas, création en cours"
STACK_CREATE=$(curl -s -X POST "$PORTAINER_URL/stacks?type=1&method=string&endpointId=$ENDPOINT_ID" \
-H "Authorization: Bearer $PORTAINER_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"Name\": \"$STACK_NAME\", \"StackFileContent\": \"$(cat docker-compose.yml | sed 's/"/\\"/g' | sed 's/$/\\n/' | tr -d '\n')\", \"Prune\": false}")
echo "Réponse de création : $STACK_CREATE"
else
echo "La stack existe, mise à jour en cours"
STACK_UPDATE=$(curl -s -X PUT "$PORTAINER_URL/stacks/$STACK_ID?endpointId=$ENDPOINT_ID" \
-H "Authorization: Bearer $PORTAINER_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"StackFileContent\": \"$(cat docker-compose.yml | sed 's/"/\\"/g' | sed 's/$/\\n/' | tr -d '\n')\", \"Prune\": false, \"PullImage\": true}")
echo "Réponse de mise à jour : $STACK_UPDATE"
fi
only:
- main