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 perso3.runner.iiens.net

SSH_USER

Utilisateur SSH, par exemple chassagn2025 ou logiique


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