GitLab : héberger et partager un projet

Temps de lecture10 min

En bref

Résumé de l’article

GitLab est le serveur sur lequel vivront vos dépôts partagés. Cet article montre comment y créer un projet, récupérer l’URL à cloner, et donner accès à vos coéquipier(ère)s en choisissant leur rôle.

La seconde partie traite de l’authentification par clés SSH : comment en générer une paire, quoi déposer sur GitLab, et pourquoi la clé privée ne quitte jamais votre machine. Une fois cela en place, clone, push et pull fonctionnent sans vous redemander de mot de passe.

Points clés à retenir

  • GitLab n’est qu’un dépôt Git de plus, hébergé sur un serveur, avec une interface web par-dessus. Tout ce que vous y faites reste du Git.
  • Deux instances de l’école sont utilisées selon les cours : gitlab.imt-atlantique.fr et gitlab-df.imt-atlantique.fr.
  • Le rôle donné à un membre détermine ce qu’il peut faire. Pour un travail de groupe où tout le monde pousse du code, Developer suffit ; Maintainer ajoute la gestion du projet.
  • La clé privée ne se partage jamais, sous aucun prétexte. Seule la clé publique, avec l’extension .pub, est déposée sur GitLab.
  • N’ajoutez pas de README à la création si vous comptez y envoyer un dépôt local déjà existant : vous vous éviterez un conflit dès le premier push.

Contenu de l’article

Aperçu de l’interface

Voici la page d’accueil de GitLab après votre première connexion. À gauche, le menu donne accès à toutes les fonctionnalités.

Gitlab Home

Créer un projet

Depuis le menu de gauche :

Créer un projet

Sans besoin particulier, choisissez Blank Project :

Blank project

Configurez votre nouveau projet, puis cliquez sur Create project :

Configurer le projet

Deux réglages méritent votre attention :

  • La visibilitéPrivate, Internal ou Public. Elle est modifiable plus tard.
  • L’ajout d’un fichier README – Cela dépend de votre point de départ. Si vous commencez le projet sur GitLab, ajoutez-en un. Si vous avez déjà un dépôt local que vous voulez envoyer vers ce projet, n’en ajoutez pas : le dépôt distant contiendrait un commit que votre dépôt local n’a pas, et votre premier push serait refusé.

Accueil du projet

Récupérer l’URL de clonage

Si vous avez configuré vos clés SSH, utilisez l’URL Clone with SSH ; sinon, l’URL Clone with HTTPS.

URL de clonage

Ajouter des membres à un projet

Depuis le menu de gauche :

Menu des membres

Puis choisissez le rôle du nouveau membre :

Configurer un membre

Rôle Ce qu’il permet
Guest Voir le projet, commenter les issues et merge requests. Ne peut pas pousser de code.
Reporter Voir et cloner le dépôt, voir les pipelines, créer et fermer des issues. Lecture seule sur le code.
Developer Pousser du code, créer et gérer des merge requests, déclencher les pipelines, gérer les tags. Le rôle du contributeur(rice) courant(e).
Maintainer Tout ce qui précède, plus la gestion du projet : branches protégées, approbation des merge requests, ajout et retrait de membres.
Owner Contrôle total, y compris la suppression du projet et la gestion des autres Owners.

La liste complète des permissions est décrite dans la documentation GitLab.

S’authentifier par clés SSH

GitLab utilise le protocole SSH pour communiquer de manière sécurisée avec Git. Lorsque vous utilisez les clés SSH pour vous authentifier sur le serveur distant GitLab, vous n’avez pas besoin de fournir votre nom d’utilisateur et votre mot de passe à chaque fois.

(source : docs.gitlab.com)

Le principe est celui du chiffrement asymétrique : vous générez deux clés qui vont ensemble. La clé privée reste sur votre machine et n’en sort jamais ; la clé publique est déposée sur GitLab, qui s’en sert pour vérifier que c’est bien vous.

Générer une paire de clés

Plusieurs algorithmes existent ; le plus moderne accepté par GitLab est ed25519 :

ssh-keygen -t ed25519 -f %USERPROFILE%\.ssh\gitlab-key -C "mon commentaire"
ssh-keygen -t ed25519 -f $HOME\.ssh\gitlab-key -C "mon commentaire"
ssh-keygen -t ed25519 -f ~/.ssh/gitlab-key -C "mon commentaire"
ssh-keygen -t ed25519 -f ~/.ssh/gitlab-key -C "mon commentaire"
  • -t définit le type de clé – ne le changez pas sans raison.
  • -f définit le chemin et le nom du fichier de clé privée. La clé publique porte le même nom, suivi de .pub.
  • -C intègre un commentaire dans la clé publique ; GitLab s’en servira comme titre.

La commande vous demande une phrase de passe. Elle est optionnelle ici, mais c’est ce qui protège votre clé privée si votre machine est compromise.

Déposer la clé publique sur GitLab

Allez dans Edit profile :

Menu profil

Puis dans SSH keys, et cliquez sur Add new key :

Page des clés SSH

Affichez le contenu de votre clé publique pour le copier :

type %USERPROFILE%\.ssh\gitlab-key.pub
Get-Content $HOME\.ssh\gitlab-key.pub
cat ~/.ssh/gitlab-key.pub
cat ~/.ssh/gitlab-key.pub

Collez ce contenu dans le champ Key, puis cliquez sur Add key :

Ajouter la clé

Le champ Title est prérempli avec le commentaire fourni par l’option -C. Vous pouvez aussi fixer une date d’expiration. À partir de là, clone, push, pull et fetch fonctionnent sans mot de passe.

Attention

La clé privée est conservée par le client et doit être gardée absolument secrète. Tout compromis de la clé privée permettra à un attaquant de se connecter aux serveurs configurés avec la clé publique associée, sans autre authentification. C’est pourquoi la clé peut être chiffrée sur le disque au moyen d’une phrase de passe.

La clé publique associée peut être partagée librement, sans aucune conséquence négative : c’est précisément son rôle.

Concrètement : ne collez jamais le contenu d’un fichier sans extension .pub dans une interface web, un message ou un dépôt Git.

Pour aller plus loin

Vérifier que la connexion SSH fonctionne

Avant de vous demander pourquoi un push échoue, testez l’authentification seule :

ssh -T git@gitlab-df.imt-atlantique.fr
ssh -T git@gitlab-df.imt-atlantique.fr
ssh -T git@gitlab-df.imt-atlantique.fr
ssh -T git@gitlab-df.imt-atlantique.fr

Un message de bienvenue mentionnant votre identifiant signifie que tout est en place. Un Permission denied (publickey) signifie que la clé n’est pas trouvée ou pas déclarée sur le serveur.

Les issues et les merge requests

GitLab n’est pas qu’un espace de stockage : il propose un suivi de tâches (issues) et un mécanisme de relecture de code avant intégration (merge requests). Vous les utiliserez dans le projet du semestre, où ils servent à répartir le travail et à garder une trace des décisions. La documentation officielle en donne un aperçu.