Gitlab
Plateforme pour déployer du code sur un serveur
Documentation
Du local à Gitlab
Pour pusher du code local sur Gitlab, il faut créer un repository sur la plateforme.
Aller dans
Settings > CI / CD
et ajouter votre clé publique SSH dansDeploy Keys
.
De Gitlab au serveur
Pour mettre en place du code sur un serveur, il faut que Gitlab puisse accéder au serveur via SSH pour récupérer le code.
Configuration
Aller dans le projet, puis
Settings > Repository > Deploy Keys
.Sur le serveur, créer une nouvelle clé SSH :
ssh-keygen -o -t rsa -C "[email protected]" -b 4096
(id_rsa.pub
).Ajouter le contenu du fichier
id_rsa.pub
dans le formulaire.
Attention : si le serveur est déjà présent, il faut passer par la liste des clés SSH utilisées dans Gitlab.
Il faut ensuite ajouter les variables pour le CI.
Aller dans
Settings > CI / CD > Variables
.Sur le serveur, créer une nouvelle clé SSH (pour Gitlab) :
ssh-keygen -o -t rsa -C "[email protected]" -b 4096
. Utiliserid_rsa_gitlab.pub
comme nom du fichier.Ajouter la clé publique aux accès autorisés :
cat .ssh/id_rsa_gitlab.pub >> .ssh/instance_keys
.Copier la clé privée dans la variable
SSH_PRIVATE_KEY
.
Initialiser le repository GIT : git init
Fichier de conf
Variables :
DEPLOYMENT_SERVER_IP
: IP du serveur distantSSH_USER
: utilisateur SSH du serveur distantSSH_PRIVATE_KEY
: clé privée du serveur distant
Copier la clé privée du serveur distant dans la variable .
# gitlab-ci.yml
image: node:8
services:
- docker:dind
stages:
- deploy
deploy_production:
stage: deploy
image: docker:git
before_script:
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- eval $(ssh-agent -s)
- '[[ -f /.dockerenv ]] && echo -e "Host *\\nStrictHostKeyChecking no\\n" > ~/.ssh/config'
- echo -e "$SSH_PRIVATE_KEY" > key
- chmod 600 key
- ssh-add key
- ssh-keyscan -H 'gitlab.com' >> ~/.ssh/known_hosts
script:
- ssh root@$DEPLOYMENT_SERVER_IP "touch ~/test_deploy_gitlab.txt"
- ...
only:
- master
Dernière mise à jour