🏳️🌈♿️👩🎨🌱 En février, je remets 3% de mes ventes à des organismes qui favorisent la diversité, les arts et l'environnement 🏳️🌈♿️👩🎨🌱
Manuel d'alchimie du code
Visibilité des projets d'un groupe GitLab
Je vais te montrer comment changer la visibilité de tous les projets d'un groupe dans GitLab. Pour ce faire, nous allons utiliser le langage Python et l'API de GitLab.
Groupes et visibilité des projets dans GitLab
Dans GitLab, nous avons la possibilité de faire des groupes ayant une visibilité, ou permissions d'accès, différente selon nos besoins: public, interne ou privé.
Quand nous créons un nouveau groupe pour y déplacer des projets existants, ils conservent leur visibilité d'origine et d'adoptent pas celle du groupe.
Souvent, on aimerait faire suivre ces permissions, surtout si on veut rendre tous les projets d'un groupe public eux aussi publics.
Utilisation de l'API de GitLab
On peut le faire un par un, mais un des avantages de GitLab est qu'ils offrent une API puissante et complète. Depuis Python, on peut y accéder avec le package python-gitlab.
Pour ce faire, tu vas avoir besoin de ces trois informations:
-
Le domaine de l'installation GitLab (flèche 1).
-
Un jeton d'accès privé avec les autorisations pour l'API, que tu configures depuis ton profil utilisateur.
-
Le numéro du groupe, que tu peux trouver sur sa page (flèche 2).
Nom de domaine et numéro de groupe
Un exemple de code pratique !
Voici un exemple de code qui permet de faire ce traitement pour un groupe. Tu n'as qu'à configurer les trois variables au début du script.
Le programme crée d'abord une instance objet de la classe GitLab, qui permet d'interagir ensuite avec le service. Ensuite, Il y a une boucle sur tous les sites qui sont identifiés comme privé dans le groupe, que l'on souhaite rendre publics.
Comme il y a une pagination de 20 sites à la fois, on fait une autre boucle à l'extérieur pour détecter s'il reste encore des sites privés.
En mettant la propriété visibility
à public
, on rend le code disponible à tous.
Il faut aussi bien sur que le groupe soit public pour que les projets puissent effectivement être accessibles aussi !