Cloner tous les dépôts Gitlab d'un groupe
Contexte
Depuis la séparation des la configuration des services en différents dépôts, il est difficile d’effectuer des modifications qui impactent tous les services (exemple : changement du format de fichier Compose). On voudrait bien, par exemple, récupérer tous les dépôts des services d’un coup.
Lien:
Pour rappel, le groupe Gitlab avec les services est ici : https://gitlab.utc.fr/picasoft/projets/services
Git ne permet pas de faire ce genre d’opérations, puisque les groupes sont un concept de Gitlab.
On va utiliser un outil très sympa : gitlabber. gitlabber
permet aussi de tirer toutes les modifications des dépôts d’un groupe d’un seul coup.
Note:
Il existe aussi ghorg, orienté GitHub et Gitlab, mais qui effectue des opérations dangereuses au pull, comme git clean
, qui efface tous les fichiers non-tracké. Ce n’est pas le bon cas d’usage pour nous.
Préparation
Installation gitlabber
:
- snippet.shell
pip install gitlabber
Créer un jeton d'accès Gitlab en lecture seule.
Lien:
Le plus rapide est de passer par ce lien : https://gitlab.utc.fr/-/profile/personal_access_tokens. Les permissions à accorder sont read_api
et read_repository
. Tu peux donner un nom parlant, comme gitlabber
, pour te souvenir.
Une fois le jeton créé, ajouter le dans tes mots de passe: il ne sera plus jamais affiché. :-p
Utilisation
Exemple pour cloner tout l’arbre des services :
- snippet.sh
gitlabber -t 'ton jeton' -i '/Picasoft/Technique/Services**' -u https://gitlab.utc.fr/ .
Un nouvel appel de la commande du même endroit fera un git pull
.
Attention:
Le chemin utilisé pour indiquer le groupe à cloner utilise le nom du groupe, pas son URL. L’option -p
, utilisée sans le -i
, permet d’afficher un arbre de l’ensemble des groupes auxquels tu appartiens.