CICD server
This commit is contained in:
+15
-7
@@ -6,7 +6,7 @@ variables:
|
|||||||
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
|
DOCKER_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
|
||||||
DOCKER_IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest
|
DOCKER_IMAGE_LATEST: $CI_REGISTRY_IMAGE:latest
|
||||||
|
|
||||||
# Build et push de l'image Docker
|
# Build (Identique, je ne le change pas)
|
||||||
build:
|
build:
|
||||||
stage: build
|
stage: build
|
||||||
image: docker:24
|
image: docker:24
|
||||||
@@ -22,31 +22,37 @@ build:
|
|||||||
- main
|
- main
|
||||||
- master
|
- master
|
||||||
|
|
||||||
# Déploiement sur le serveur (pull et redémarrage du container)
|
# Deploy CORRIGÉ
|
||||||
deploy:
|
deploy:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
image: alpine:latest
|
image: alpine:latest
|
||||||
before_script:
|
before_script:
|
||||||
- apk add --no-cache openssh-client
|
- apk add --no-cache openssh-client
|
||||||
- eval $(ssh-agent -s)
|
- eval $(ssh-agent -s)
|
||||||
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
# Utilisation de printf pour éviter les soucis de saut de ligne
|
||||||
|
- printf "%s\n" "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
|
||||||
- mkdir -p ~/.ssh
|
- mkdir -p ~/.ssh
|
||||||
- chmod 700 ~/.ssh
|
- chmod 700 ~/.ssh
|
||||||
- ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
- ssh-keyscan -H $DEPLOY_SERVER >> ~/.ssh/known_hosts
|
||||||
script:
|
script:
|
||||||
- |
|
- |
|
||||||
ssh $DEPLOY_USER@$DEPLOY_SERVER << 'EOF'
|
# ATTENTION : EOF sans guillemets ici pour que GitLab injecte les variables
|
||||||
|
ssh $DEPLOY_USER@$DEPLOY_SERVER << EOF
|
||||||
|
set -e # Arrête le script si une commande échoue
|
||||||
|
|
||||||
# Créer le dossier dev s'il n'existe pas
|
# Créer le dossier dev s'il n'existe pas
|
||||||
mkdir -p ~/dev
|
mkdir -p ~/dev
|
||||||
cd ~/dev
|
cd ~/dev
|
||||||
|
|
||||||
|
echo "Déploiement de l'image : $DOCKER_IMAGE_LATEST"
|
||||||
|
|
||||||
# Login au registry GitLab
|
# Login au registry GitLab
|
||||||
echo $CI_REGISTRY_PASSWORD | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
|
echo "$CI_REGISTRY_PASSWORD" | docker login $CI_REGISTRY -u $CI_REGISTRY_USER --password-stdin
|
||||||
|
|
||||||
# Pull la nouvelle image
|
# Pull la nouvelle image
|
||||||
docker pull $DOCKER_IMAGE_LATEST
|
docker pull $DOCKER_IMAGE_LATEST
|
||||||
|
|
||||||
# Arrêter et supprimer l'ancien container
|
# Arrêter et supprimer l'ancien container (avec || true pour ne pas bloquer si inexistant)
|
||||||
docker stop portfolio || true
|
docker stop portfolio || true
|
||||||
docker rm portfolio || true
|
docker rm portfolio || true
|
||||||
|
|
||||||
@@ -57,8 +63,10 @@ deploy:
|
|||||||
-p 3006:3000 \
|
-p 3006:3000 \
|
||||||
$DOCKER_IMAGE_LATEST
|
$DOCKER_IMAGE_LATEST
|
||||||
|
|
||||||
# Nettoyage des anciennes images
|
# Nettoyage
|
||||||
docker image prune -af --filter "until=24h"
|
docker image prune -af --filter "until=24h"
|
||||||
|
|
||||||
|
echo "Déploiement terminé avec succès !"
|
||||||
EOF
|
EOF
|
||||||
only:
|
only:
|
||||||
- main
|
- main
|
||||||
|
|||||||
Reference in New Issue
Block a user