GitLab
Plateforme DevOps tout-en-un construite autour de Git : hébergement de code, revue de Merge Requests, CI/CD intégré, registre de paquets et de conteneurs, monitoring et sécurité — le tout sous le même toit. Cousin direct (et concurrent) de GitHub.
À quoi ça sert
Comme GitHub, GitLab héberge tes dépôts Git à distance et ajoute par-dessus tout ce qui sert au travail en équipe. La différence d'identité tient en un slogan : GitLab se présente comme une plateforme DevOps unifiée qui couvre tout le cycle, de l'idée au déploiement et à la supervision :
- Hébergement de tes projets (privés ou publics).
- Merge Requests (MR) : l'équivalent des Pull Requests, avec le même esprit (proposer, discuter, fusionner).
- Issues et planning intégré (Kanban, tableaux, milestones).
- GitLab CI/CD : pipelines déclarés dans un fichier
.gitlab-ci.ymlà la racine, lancés à chaque push. - Container Registry et Package Registry pour stocker tes images Docker et tes paquets, inclus de base.
- Pages : même principe que GitHub Pages pour publier un site statique.
Git = l'outil de versioning installé sur ton PC. GitLab = un service en ligne (et une plateforme auto-hébergeable) qui héberge des dépôts Git et ajoute autour tout un outillage DevOps. Tu peux utiliser Git sans GitLab, et l'inverse n'a pas vraiment de sens.
GitLab.com (SaaS, hébergé par GitLab Inc.) — équivalent direct de github.com. GitLab CE (Community Edition, open source) — à auto-héberger sur ton propre serveur, gratuit, parfait pour une école ou une asso. GitLab EE (Enterprise Edition) — version payante avec fonctionnalités avancées (sécurité, conformité, support).
Un exemple d'usage
Tu travailles sur un projet d'IA en équipe. Chacun bosse sur sa branche, propose ses
changements via une Merge Request, les autres relisent et commentent, et une fois validée,
la MR est fusionnée dans main. À chaque MR, GitLab CI lance automatiquement
les tests pour vérifier que rien ne casse.
Le workflow type, identique à Git d'un service à l'autre :
# Récupérer la dernière version
git pull origin main
# Créer une branche pour ta feature
git checkout -b feat/ma-fonctionnalite
# Coder, puis committer
git add .
git commit -m "Ajoute la fonctionnalité X"
# Pousser et ouvrir une MR
git push origin feat/ma-fonctionnalite
Au push, GitLab affiche dans la console l'URL directe pour créer la MR (pratique : pas besoin de retourner sur le site). Tu décris ton changement, tu attends la review, et la MR est fusionnée.
How-to : configurer GitLab
GitLab.com est un service en ligne, donc rien à installer côté plateforme. Tu as juste besoin d'un compte web et de Git localement. La procédure est très proche de GitHub : les commandes Git sont strictement les mêmes, seuls les noms d'écrans et les URLs changent.
-
Créer un compte GitLab
- Va sur gitlab.com/users/sign_up.
- Choisis un username stable (il apparaîtra dans toutes tes URLs
gitlab.com/<username>/...). - Utilise une adresse e-mail durable.
- Active la vérification en deux étapes dès que possible (Settings → Account → Two-Factor Authentication).
2FA et CIComme GitHub, GitLab pousse fortement vers la 2FA obligatoire. Active-la à la création avec une appli type Authy / Google Authenticator. Pour les push depuis ton PC, tu utiliseras des clés SSH (étape 5) ou un Personal Access Token — la 2FA ne te dérange pas.
-
Créer ton premier projet
Sur GitLab, on parle de Project (équivalent du Repository de GitHub).
- Clique sur « New project » en haut à droite, puis « Create blank project ».
- Donne un nom au projet (ex.
devia-tp1). - Choisis la visibility level : Private, Internal (visible à tous les utilisateurs connectés du serveur) ou Public. Internal est une nuance que GitHub n'a pas — utile en entreprise / école.
- Coche « Initialize repository with a README ».
- Optionnel : ajoute un
.gitignorePython. - Clique sur « Create project ».
-
Installer Git sur ton PC
Étape strictement identique à GitHub — Git est un outil unique, indépendant du service distant. Si Git est déjà installé pour GitHub, passe à l'étape suivante.
bash# macOS brew install git # Linux (Debian / Ubuntu) sudo apt install git # Windows winget install --id Git.Git -e # Vérifier git --version -
Configurer ton identité Git
Aussi indépendant du service. Si déjà fait pour GitHub, c'est OK pour GitLab.
bashgit config --global user.name "Ton Prénom" git config --global user.email "ton-email@example.fr" git config --global init.defaultBranch mainE-mail privé GitLabPour ne pas exposer ton e-mail dans les commits, GitLab fournit aussi un alias du type
123456-username@users.noreply.gitlab.com. Trouve-le dans Settings → Profile → Public email / commit email. -
Authentifier ton PC auprès de GitLab (clé SSH)
Même principe que GitHub. Si tu as déjà une paire de clés
id_ed25519, tu peux la réutiliser : une clé SSH n'est pas attachée à un service en particulier.bash# Générer une paire de clés (si tu n'en as pas déjà une) ssh-keygen -t ed25519 -C "ton-email@example.fr" # Afficher la clé publique cat ~/.ssh/id_ed25519.pubSur GitLab : avatar (en haut à droite) → Edit profile → SSH Keys, colle la clé publique, donne-lui un titre. Vérifie :
bashssh -T git@gitlab.com # → "Welcome to GitLab, @username!" -
Cloner et travailler avec un projet
Sur la page de ton projet GitLab, clique Clone → Clone with SSH.
bashgit clone git@gitlab.com:<username>/<projet>.git cd <projet> # Modifier un fichier... git status git add . git commit -m "Mon premier commit" git pushAu premier
pushsur une nouvelle branche, GitLab te renvoie dans la console une URL directe pour ouvrir la Merge Request. C'est un petit confort spécifique à GitLab qu'on apprécie vite. -
Configurer VS Code avec GitLab
VS Code gère Git nativement. Pour bien intégrer GitLab (MR, issues, pipelines) sans quitter l'éditeur :
-
Installe GitLab Workflow
(
GitLab.gitlab-workflow) — extension officielle qui ajoute la gestion des MRs, issues, pipelines et snippets directement dans VS Code. -
Installe GitLens (
eamodio.gitlens) — agnostique du service, affiche qui a écrit chaque ligne et l'historique. -
Connecte ton compte GitLab via un Personal Access Token (Settings →
Access Tokens → cocher
apietread_user). VS Code te demandera ce token au premier démarrage de l'extension.
-
Installe GitLab Workflow
(
-
Bonus : un pipeline GitLab CI minimal
Là où GitHub utilise
.github/workflows/<nom>.yml, GitLab utilise un seul fichier.gitlab-ci.ymlà la racine du dépôt :yamlstages: - test test:python: stage: test image: python:3.12 script: - pip install -r requirements.txt - pytestPousse ce fichier, et GitLab lance automatiquement le pipeline. Le résultat apparaît sur la page de ta MR (badge ✓ ou ✗) et dans l'onglet Build → Pipelines.
Modèle mentalUn job GitLab CI tourne dans une image Docker que tu choisis (
image: python:3.12), exécute une liste de commandes (script:), et est regroupé dans un stage. Les stages s'enchaînent en série, les jobs d'un même stage tournent en parallèle. C'est l'équivalent direct desjobs:de GitHub Actions, avec un vocabulaire un peu différent.
GitLab vs GitHub : que choisir et pourquoi
Les deux services rendent le même service de base — héberger du code Git, faire des revues de code, lancer des pipelines CI/CD. Les différences sont surtout d'identité, de périmètre et d'écosystème.
Le vocabulaire qui change
- Pull Request (GitHub) → Merge Request (GitLab) — même concept, nom différent. Tu verras parfois les deux abrégés en « MR » ou « PR » dans la même conversation.
- Repository (GitHub) → Project (GitLab) — c'est ton dépôt + ses issues + ses pipelines + son wiki, vu comme un tout.
- Organization (GitHub) → Group (GitLab) — un espace partagé qui regroupe plusieurs projets.
.github/workflows/*.yml(GitHub Actions) →.gitlab-ci.yml(GitLab CI) — un seul fichier à la racine côté GitLab, un par workflow côté GitHub.- Branch protection rules (GitHub) → Protected branches (GitLab) — mêmes garde-fous, UI différente.
Forces de chaque côté
(1) Communauté open source de loin la plus grande : la majorité des projets visibles que tu croises vivent sur GitHub. (2) Marketplace d'Actions très riche — pour chaque besoin de CI/CD, quelqu'un a déjà publié l'action qui va bien. (3) GitHub Copilot (assistant IA dans l'éditeur) très intégré. (4) Standard de facto pour un portfolio dev — un recruteur attendra plus naturellement un lien GitHub. (5) UI / UX globalement plus polie, plus rapide à prendre en main.
(1) Plateforme tout-en-un : CI/CD, container registry, package registry, security scanning, monitoring, kanban — tout est inclus sous le même toit sans dépendre d'intégrations externes. (2) Auto-hébergeable gratuitement avec GitLab CE (Community Edition) — utile pour une école, une asso, une boîte qui veut garder le code sur ses serveurs. (3) Open source côté CE — tu peux voir le code de la plateforme elle-même. (4) Origine européenne (entreprise enregistrée aux Pays-Bas) — pertinent quand la souveraineté des données compte. (5) Visibilité Internal (visible à tous les comptes connectés du serveur), pratique en entreprise pour les projets « internes mais pas secrets ».
Faiblesses respectives
- GitHub est moins « intégré » : pour faire l'équivalent de ce que GitLab fait nativement (container registry, security scan, monitoring), tu vas dépendre d'intégrations tierces. Pas auto-hébergeable gratuitement (GitHub Enterprise Server est payant).
- GitLab a une UI parfois jugée moins fluide (lente sur certaines pages), une communauté plus petite donc moins de projets open source visibles, et moins de notoriété pour un portfolio personnel.
Comment choisir, selon le contexte
- Projet open source / portfolio / contribuer aux autres → GitHub. C'est là que la communauté est, c'est ce qu'un recruteur regardera.
- Stage / job en entreprise DevOps mature → GitLab est très répandu, notamment en Europe et dans les structures qui veulent un outillage intégré.
- Auto-hébergement (école, association, boîte sensible à la souveraineté) → GitLab CE sans hésiter — gratuit, open source, complet.
- Formation / cours → l'un ou l'autre selon ce qu'utilise l'école. Les compétences Git restent transférables à 100 %.
- En vrai, beaucoup de devs ont les deux : GitHub pour l'open source perso, GitLab pour le travail.
Tu peux miroirer automatiquement un dépôt GitLab vers GitHub (et inversement). Beaucoup de projets professionnels poussent le code de référence sur GitLab et exposent un miroir public sur GitHub pour la visibilité. Aucun choix n'est définitif.
Aide-mémoire Git
Les commandes Git sont strictement les mêmes que pour GitHub : Git est l'outil local, la plateforme distante (GitLab, GitHub, Bitbucket…) ne change rien.
# Démarrer / récupérer
git init # nouveau dépôt local
git clone <url> # cloner un dépôt distant
# Cycle de base
git status
git add <fichier> # stage un fichier
git add . # tout
git commit -m "message"
git push
git pull
# Branches
git branch # lister
git checkout -b <nom> # créer + basculer
git switch <nom> # basculer (équivalent moderne)
git merge <nom> # fusionner dans la branche actuelle
# Inspecter
git log --oneline --graph
git diff
git blame <fichier>
# Remotes (utile si tu pousses sur plusieurs services)
git remote -v
git remote add gitlab git@gitlab.com:user/repo.git
git push gitlab main
Pour aller plus loin
- Documentation GitLab : docs.gitlab.com
- Tutoriels officiels GitLab : docs.gitlab.com/tutorials
- GitLab CI/CD : docs.gitlab.com/ci
- Pro Git (livre gratuit) : git-scm.com/book/fr
- Fiche jumelle sur ce site : GitHub.