La mise en place d’une chaîne d’intégration continue et de livraison continue (CI/CD) est devenue un pilier essentiel pour les équipes de développement souhaitant automatiser leurs workflows et garantir la qualité de leurs applications. GitLab, avec ses fonctionnalités natives de CI/CD, offre une solution puissante, surtout lorsqu’il est auto-hébergé sur un serveur dédié comme ceux proposés par LWS. Cette configuration permet non seulement de maîtriser l’infrastructure mais aussi d’optimiser les coûts et la sécurité.
Dans ce guide, nous explorerons étape par étape comment configurer une pipeline CI/CD avec GitLab auto-hébergé sur LWS. Que vous soyez un développeur freelance ou une équipe en entreprise, ce tutoriel vous fournira les clés pour automatiser vos tests, builds et déploiements, tout en exploitant au maximum les ressources de votre hébergement LWS. Prêt à transformer votre processus de développement ? Suivez le guide.
Pourquoi Configurer une CI/CD avec GitLab Auto-Hébergé sur LWS ?
Les Avantages d’une CI/CD Automatisée
L’intégration continue (CI) et la livraison continue (CD) permettent d’automatiser les étapes critiques du développement logiciel, réduisant ainsi les erreurs humaines et accélérant les cycles de publication. Voici pourquoi une telle configuration est indispensable :
- Réduction des erreurs : Les tests automatisés exécutés à chaque commit détectent les bugs avant qu’ils n’atteignent la production.
- Déploiements plus rapides : Les pipelines CI/CD permettent de déployer des mises à jour en continu, sans intervention manuelle.
- Collaboration améliorée : Les équipes peuvent travailler en parallèle sur différentes fonctionnalités, tout en s’assurant que le code reste stable.
- Traçabilité : Chaque modification est enregistrée, facilitant le suivi des changements et le retour en arrière si nécessaire.
Pourquoi Choisir GitLab Auto-Hébergé sur LWS ?
GitLab propose une solution open-source et auto-hébergée, idéale pour les entreprises soucieuses de confidentialité et de contrôle. En l’installant sur un serveur LWS, vous bénéficiez de plusieurs avantages :
- Maîtrise totale de l’infrastructure : Contrairement aux solutions cloud, vous gérez vous-même le serveur, ce qui réduit les coûts à long terme.
- Sécurité renforcée : Vos données restent sur votre infrastructure, loin des risques liés aux services cloud tiers.
- Personnalisation avancée : Vous pouvez configurer GitLab selon vos besoins spécifiques, avec des runners dédiés pour exécuter vos pipelines.
- Optimisation des performances : Un serveur dédié comme ceux de LWS offre des ressources garanties, essentielles pour des pipelines complexes.
En combinant la puissance de GitLab CI/CD avec l’hébergement LWS, vous créez un environnement de développement robuste, scalable et sécurisé.
Prérequis pour Configurer une CI/CD avec GitLab Auto-Hébergé sur LWS
1. Un Serveur LWS Adapté
Avant de commencer, assurez-vous que votre hébergement LWS répond aux exigences minimales pour installer GitLab :
- Système d’exploitation : Ubuntu 20.04 LTS ou 22.04 LTS (recommandé pour sa stabilité).
- Ressources : Au moins 4 Go de RAM (8 Go recommandés pour les équipes) et 2 cœurs CPU.
- Espace disque : 50 Go minimum (plus si vous prévoyez de stocker des artefacts de build).
- Accès SSH : Un accès root ou sudo pour installer et configurer GitLab.
2. Un Domaine Personnalisé (Optionnel mais Recommandé)
Bien que GitLab puisse fonctionner avec une adresse IP, l’utilisation d’un nom de domaine facilite l’accès pour les utilisateurs et les runners. Vous pouvez configurer un sous-domaine comme gitlab.votredomaine.com via le panneau de contrôle LWS.
3. Un Certificat SSL
Pour sécuriser les communications, installez un certificat SSL (Let’s Encrypt est une solution gratuite et simple). Cela est particulièrement important si vous exposez GitLab sur Internet.
4. Un Compte GitLab (Pour les Runners)
Si vous prévoyez d’utiliser des runners partagés ou spécifiques, assurez-vous d’avoir un compte GitLab avec les droits nécessaires pour créer des projets et des runners.
Étape par Étape : Installation de GitLab Auto-Hébergé sur LWS
1. Connexion au Serveur via SSH
Connectez-vous à votre serveur LWS en utilisant un client SSH comme PuTTY ou Terminal :
ssh root@votreadresseip -p 22
Remplacez votreadresseip par l’adresse IP de votre serveur. Si vous utilisez un nom d’utilisateur différent de root, ajustez la commande en conséquence.
2. Mise à Jour du Système
Avant toute installation, mettez à jour les paquets système :
sudo apt update && sudo apt upgrade -y
3. Installation des Dépendances
GitLab nécessite plusieurs dépendances. Installez-les avec la commande suivante :
sudo apt install -y curl openssh-server ca-certificates tzdata perl
4. Ajout du Dépôt GitLab
Ajoutez le dépôt officiel de GitLab pour Ubuntu :
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.deb.sh | sudo bash
5. Installation de GitLab
Installez GitLab en spécifiant le nom de domaine ou l’adresse IP de votre serveur :
sudo EXTERNAL_URL="https://gitlab.votredomaine.com" apt install gitlab-ee
Remplacez https://gitlab.votredomaine.com par l’URL que vous souhaitez utiliser. Si vous n’avez pas de domaine, utilisez l’adresse IP :
sudo EXTERNAL_URL="http://votreadresseip" apt install gitlab-ee
6. Configuration du Certificat SSL (Recommandé)
Si vous avez configuré un nom de domaine et un certificat SSL, GitLab devrait le détecter automatiquement. Sinon, vous pouvez le configurer manuellement dans le fichier /etc/gitlab/gitlab.rb :
sudo nano /etc/gitlab/gitlab.rb
Ajoutez ou modifiez les lignes suivantes :
nginx['redirect_http_to_https'] = true nginx['ssl_certificate'] = "/etc/letsencrypt/live/votredomaine.com/fullchain.pem" nginx['ssl_certificate_key'] = "/etc/letsencrypt/live/votredomaine.com/privkey.pem"
Puis relancez GitLab :
sudo gitlab-ctl reconfigure
7. Accès à GitLab
Une fois l’installation terminée, accédez à GitLab via votre navigateur en utilisant l’URL configurée. Vous devriez voir l’écran de connexion. Le mot de passe initial pour l’utilisateur root est généré automatiquement. Pour le récupérer, exécutez :
sudo cat /etc/gitlab/initial_root_password
Copiez le mot de passe et connectez-vous. Changez-le immédiatement après la première connexion pour des raisons de sécurité.
Configuration des Runners pour les Pipelines CI/CD
1. Qu’est-ce qu’un Runner GitLab ?
Un runner est un agent qui exécute les jobs définis dans vos fichiers .gitlab-ci.yml. GitLab propose plusieurs types de runners :
- Runners partagés : Gérés par GitLab (limités en nombre et en ressources).
- Runners spécifiques : Auto-hébergés, ils offrent plus de contrôle et de ressources.
- Runners Kubernetes : Pour les environnements conteneurisés.
2. Installation d’un Runner Auto-Hébergé sur LWS
Pour une intégration optimale avec votre serveur LWS, installez un runner spécifique. Suivez ces étapes :
a. Installation du Runner
Sur votre serveur LWS, exécutez :
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash sudo apt-get install gitlab-runner
b. Enregistrement du Runner
Pour enregistrer le runner, récupérez le token depuis GitLab :
- Connectez-vous à votre instance GitLab.
- Allez dans Admin Area > Runners.
- Copiez le token sous Set up a specific Runner manually.
Puis, sur votre serveur, exécutez :
sudo gitlab-runner register
Vous serez invité à entrer les informations suivantes :
- L’URL de votre instance GitLab (ex:
https://gitlab.votredomaine.com). - Le token que vous avez copié.
- Une description pour le runner (ex:
runner-lws-prod). - Les tags (optionnel, pour organiser vos runners).
- L’exécuteur (choisissez
shellpour une installation simple oudockerpour une exécution conteneurisée).
c. Vérification du Runner
Pour vérifier que le runner est bien enregistré, retournez dans l’interface GitLab sous Admin Area > Runners. Vous devriez voir votre runner en ligne.
3. Configuration des Tags et des Variables
Pour optimiser l’utilisation de vos runners, configurez des tags et des variables d’environnement dans GitLab :
- Tags : Utilisez-les pour assigner des jobs spécifiques à certains runners (ex:
prod,test). - Variables : Stockez des secrets (comme des clés API) dans Settings > CI/CD > Variables.
Création d’une Pipeline CI/CD avec GitLab et LWS
1. Structure de Base d’un Fichier .gitlab-ci.yml
Le fichier .gitlab-ci.yml est le cœur de votre pipeline CI/CD. Il définit les étapes, les jobs et les conditions d’exécution. Voici un exemple de base :
stages: - test - build - deploy variables: DOCKER_IMAGE: "mon-projet:latest" test: stage: test script: - echo "Exécution des tests unitaires..." - npm test tags: - test build: stage: build script: - echo "Construction de l'image Docker..." - docker build -t $DOCKER_IMAGE . tags: - build deploy: stage: deploy script: - echo "Déploiement sur le serveur LWS..." - docker-compose up -d tags: - prod only: - main
2. Définition des Stages
Les stages représentent les différentes phases de votre pipeline. Dans l’exemple ci-dessus, nous avons trois stages : test, build et deploy. Vous pouvez en ajouter d’autres selon vos besoins (ex: security, linting).
3. Configuration des Jobs
Chaque job est une tâche exécutée dans un stage spécifique. Voici quelques exemples de jobs que vous pourriez configurer :
- Tests unitaires : Exécutés dans le stage
test. - Construction d’une image Docker : Exécutée dans le stage
build. - Déploiement sur un serveur : Exécuté dans le stage
deploy.
4. Utilisation des Artifacts
Les artifacts sont des fichiers générés pendant l’exécution d’un job et conservés pour les jobs suivants. Par exemple, vous pouvez archiver les résultats des tests :
test: stage: test script: - npm test artifacts: paths: - test-results/ expire_in: 1 week
5. Déploiement sur un Serveur LWS
Pour déployer votre application sur un serveur LWS, vous pouvez utiliser des scripts SSH ou des outils comme Ansible. Voici un exemple de job de déploiement :
deploy: stage: deploy script: - chmod 400 $SSH_PRIVATE_KEY - ssh -o StrictHostKeyChecking=no -i $SSH_PRIVATE_KEY user@votreserveur "cd /var/www/mon-projet && git pull && docker-compose up -d" only: - main
Assurez-vous de stocker votre clé SSH privée dans les variables CI/CD de GitLab.
Optimisation et Bonnes Pratiques pour une CI/CD Efficace
1. Gestion des Secrets et des Variables
Évitez de hardcoder des informations sensibles comme les mots de passe ou les clés API dans vos fichiers .gitlab-ci.yml. Utilisez plutôt les variables d’environnement de GitLab :
- Allez dans Settings > CI/CD > Variables.
- Ajoutez vos variables (marquez-les comme Masked pour plus de sécurité).
- Accédez-y dans vos scripts avec la syntaxe
$NOM_VARIABLE.
2. Utilisation des Caches
Les caches permettent de stocker des dépendances entre les exécutions de jobs, accélérant ainsi les pipelines. Par exemple, pour un projet Node.js :
cache: key: ${CI_COMMIT_REF_SLUG} paths: - node_modules/
3. Parallélisation des Jobs
Pour réduire le temps d’exécution de vos pipelines, utilisez la parallélisation. GitLab permet d’exécuter plusieurs jobs en parallèle dans un même stage :
test: stage: test parallel: matrix: - NODE_VERSION: ["14", "16", "18"] script: - nvm install $NODE_VERSION - npm test
4. Notifications et Alertes
Configurez des notifications pour être informé des échecs de pipeline. GitLab peut envoyer des alertes via email, Slack ou d’autres intégrations :
- Allez dans Settings > Integrations.
- Ajoutez une intégration (

