From 176bedd0ba940bcddb533f10ab1132925bd979e1 Mon Sep 17 00:00:00 2001 From: TheValll Date: Thu, 22 Jan 2026 18:44:16 +0100 Subject: [PATCH] CICD server --- .gitlab-ci.yml | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .gitlab-ci.yml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000..eeccd81 --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,66 @@ +stages: + - build + - deploy + +variables: + DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA + DOCKER_IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest + +# Build et push de l'image Docker +build: + stage: build + image: docker:24 + services: + - docker:24-dind + before_script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + script: + - docker build -t $DOCKER_IMAGE -t $DOCKER_IMAGE_LATEST . + - docker push $DOCKER_IMAGE + - docker push $DOCKER_IMAGE_LATEST + only: + - main + - master + +# Déploiement sur le serveur (pull et redémarrage du container) +deploy: + stage: deploy + image: alpine:latest + before_script: + - apk add --no-cache openssh-client + - eval $(ssh-agent -s) + - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - + - mkdir -p ~/.ssh + - chmod 700 ~/.ssh + - ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts + script: + - | + ssh $DEPLOY_USER@$DEPLOY_SERVER << 'EOF' + # Créer le dossier dev s'il n'existe pas + mkdir -p ~/dev + cd ~/dev + + # Login au registry GitLab + echo $CI_REGISTRY_PASSWORD | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin + + # Pull la nouvelle image + docker pull $DOCKER_IMAGE_LATEST + + # Arrêter et supprimer l'ancien container + docker stop portfolio || true + docker rm portfolio || true + + # Lancer le nouveau container + docker run -d \ + --name portfolio \ + --restart unless-stopped \ + -p 3006:3000 \ + $DOCKER_IMAGE_LATEST + + # Nettoyage des anciennes images + docker image prune -af --filter "until=24h" + EOF + only: + - main + - master + when: on_success