CICD server
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user