Déployer via Git
Introduction
L’objectif est de déployer automatiquement un site depuis GitLab CI vers un serveur distant en SSH.
À chaque modification sur la branche défini (ex: main), la CI se connecte au serveur, récupère la dernière version du dépôt, puis effectue des opérations si nécessaire.
Cette méthode est standard et recommandée pour les projets de type associatif.
Principe
Le déploiement repose sur une clé SSH privée stockée dans les variables CI/CD du projet GitLab.
Il vous faudra écrire le script yml de CI à la racine du projet. Puis le nommer exactement “.gitlab-ci.yml“.
Les variables CI/CD nécessaire sont :
Variable | Descriptiion |
|---|---|
SSH_PRIVATE_KEY | Clé privée utilisée par la CI pour se co au serveur. |
SSH_HOST | Hôte qui sera |
SSH_USER | Utilisateur SSH, par exemple |
Exemple de .gitlab-ci.yml
stages:
- deploy
deploy_production:
stage: deploy
only:
- main # La branche que vous souhaitez suivre.
before_script:
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- printf '%s\n' "$SSH_PRIVATE_KEY" > ~/.ssh/deploy_key
- chmod 600 ~/.ssh/deploy_key
- |
cat > ~/.ssh/config <<EOF
Host production
HostName $SSH_HOST
User $SSH_USER
IdentityFile ~/.ssh/deploy_key
IdentitiesOnly yes
StrictHostKeyChecking no
EOF
script:
- |
ssh production << 'EOF'
set -e
cd /chemin/vers/html # Ici vous devez mettre le fichier dans lequel se trouve votre .git
git fetch origin
git reset --hard origin/main # La branche que vouss souhaitez suivre.
# Ici vous pouvez lancer vos commandes
# pour relancer le serveur si besoin.
EOF
environment:
name: production