Aller au contenu

Configuration du GitLab Runner

Ce document explique comment enregistrer et configurer le GitLab Runner sur ProbatioVault-IA-Server.

Prérequis

  • GitLab Runner installé (via scripts/bootstrap.sh)
  • Token d'enregistrement du projet GitLab
  • Accès SSH au serveur

Obtenir le token d'enregistrement

  1. Aller sur GitLab : https://gitlab.com/probatiovault/probatiovault-ia-server
  2. Naviguer vers Settings → CI/CD → Runners
  3. Cliquer sur New project runner
  4. Configurer :
  5. Tags : ia-server, shell, gpu
  6. Run untagged jobs : ☑ (coché)
  7. Description : ProbatioVault IA Server
  8. Copier le token généré (commence par glrt-)

Enregistrer le runner

Se connecter au serveur et exécuter :

ssh ProbatioVault-IA-Server

sudo gitlab-runner register \
  --url https://gitlab.com/ \
  --registration-token glrt-VOTRE_TOKEN_ICI \
  --description "ProbatioVault IA Server" \
  --tag-list "ia-server,shell,gpu" \
  --executor shell \
  --shell bash

Vérifier l'installation

Vérifier le service systemd

# Vérifier que le service est actif
sudo systemctl status gitlab-runner

# Démarrer le service si nécessaire
sudo systemctl start gitlab-runner

# Activer le démarrage automatique
sudo systemctl enable gitlab-runner

# Redémarrer le service
sudo systemctl restart gitlab-runner

Vérifier le runner GitLab

# Lister les runners enregistrés
sudo gitlab-runner list

# Vérifier le statut du runner
sudo gitlab-runner status

# Vérifier la connexion avec GitLab
sudo gitlab-runner verify

# Voir les logs en temps réel
sudo journalctl -u gitlab-runner -f

# Voir les logs en mode debug
sudo gitlab-runner --debug run

Statut attendu

Quand tout fonctionne correctement :

● gitlab-runner.service - GitLab Runner
     Loaded: loaded (/etc/systemd/system/gitlab-runner.service; enabled; preset: enabled)
     Active: active (running) since ...
   Main PID: xxxxx (gitlab-runner)

Le runner devrait apparaître "Online" dans GitLab après quelques secondes (polling automatique).

Configuration avancée

Le fichier de configuration est dans /etc/gitlab-runner/config.toml :

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "ProbatioVault IA Server"
  url = "https://gitlab.com/"
  token = "VOTRE_TOKEN"
  executor = "shell"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]

Permissions

Le runner s'exécute avec l'utilisateur gitlab-runner. Pour que Terraform/Ansible puissent fonctionner :

# Ajouter gitlab-runner au groupe sudo (si nécessaire)
sudo usermod -aG sudo gitlab-runner

# Configurer sudo sans mot de passe pour Terraform/Ansible (optionnel, à évaluer)
# Ou utiliser des credentials via Vault

Sécurité

  • Le runner est configuré avec l'executor shell (accès direct au système)
  • Les jobs s'exécutent avec l'utilisateur gitlab-runner
  • Les credentials sensibles (AWS, Vault) doivent être récupérés depuis HashiCorp Vault
  • Ne jamais commiter de secrets dans le dépôt Git

Désactiver/supprimer le runner

# Désactiver temporairement
sudo gitlab-runner stop

# Supprimer un runner
sudo gitlab-runner unregister --name "ProbatioVault IA Server"

# Supprimer tous les runners
sudo gitlab-runner unregister --all-runners

Dépannage

Le runner n'apparaît pas dans GitLab

  1. Vérifier que le token est correct
  2. Vérifier la connectivité réseau : curl https://gitlab.com
  3. Relancer le runner : sudo gitlab-runner restart

Les jobs échouent avec "permission denied"

  1. Vérifier les permissions du répertoire de build
  2. Vérifier que gitlab-runner a les droits nécessaires
  3. Vérifier les credentials Vault

Les jobs Terraform échouent

  1. Vérifier que Terraform est dans le PATH
  2. Vérifier les credentials AWS (via Vault)
  3. Vérifier que le backend Terraform est configuré