Date Catégorie posts Étiquettes DevOps

1 Qu'est ce qu'une forge logicielle?

Une forge logicielle est un système de gestion visant à faciliter le développement collaboratif.

Une forge logicielle offre un panel d'outils permettant également d'animer une communauté de contributeurs (au delà des développeurs - traducteurs, graphistes, designer) et d'utilisateurs.

Basiquement les fonctionnalités d'une forge sont

  • système de gestion des versions
  • gestionnaire de listes de discussion (et/ou de forums)
  • outil de suivi des bugs / gestion des tâches
  • gestionnaire de documentation

pour information les forges suivantes existent déjà dans le cadre de la recherche scientifique publique

Voir aussi Où héberger mon code par Claire Mouton (INRIA) aux journées ARAMIS 2017

D'un point de vue plus général, GitHub est actuellement la plus grosse forge logicielle existante, dans la mesure où ce service héberge une portion significative des projets Open Source à date.

d'après Wikipédia

En avril 2016, GitHub a annoncé avoir dépassé les 14 millions d'utilisateurs et plus de 35 millions de dépôts de projets le plaçant comme le plus grand > hébergeur de code source au monde.

2 Pourquoi une nouvelle forge?

GitHub n'est pas une solution acceptable dans le cadre de la recherche scientifique publique, dans la mesure où les contenus qu'il héberge sont soumis à la législation américaine, ce qui représente de fait une perte de souveraineté.

La forge UCA existe depuis une dizaine d'années et héberge plus d'un millier de projets.

la forge ISIMA/LIMOS a été lancée

  • pour regrouper les projets ISIMA/LIMOS. Il est en effet impossible de classer les projets sur la forge UCA.
  • pour permettre d'utiliser des urls en https://gitlab.isima.fr (bientôt en https://gitlab.limos.fr - soyez patients ;)) pour diffuser le code et les données de recherche associés sur des services comme HAL ou zenodo

L'équipe CRI ISIMA/LIMOS a choisi GitLab CE notamment pour bénéficier

En termes de fonctionnalités GitLab CE est équivalent à Github, mais permet un hébergement souverain.

D'un point de vue pédagogique, savoir utiliser GitLab CE, c'est savoir utiliser Github et se familiariser aux bonnes pratiques liées à son utilisation.

3 gitlab.isima.fr

GitLab CE est un outil puissant et complexe, basé sur git, un système de gestion de version lui même puissant et complexe.

La bonne nouvelle est qu'il est possible d'utiliser ces outils avec un minimum de connaissance.

3.1 Ce que n'est pas gitlab.isima.fr!

Un substitut à Dropbox!

Gitlab est optimisé pour versionner des fichiers textes ... d'une taille raisonnable.

Merci d'éviter les dossiers de milliers d'images, les vidéos de plusieurs Go et autres images ISO ...

L'équipe CRI ISIMA/LIMOS se réserve la possibilité de suspendre immédiatement tout compte sur la forge ou tout dépôt qui ne suivrait pas cet avertissement.

L'UCA tient à votre disposition un disque dur virtuel de 100 Go dont l'utilisation sera détaillée dans un futur post sur ce blog.

3.2 Se connecter

3.2.1 Enseignants chercheurs / doctorants / personnels / étudiants

L'authentification du service gitlab.isima.fr repose sur l'Active Directory de l'ISIMA/LIMOS.

Chaque utilisateur possédant un compte dans l'Active Directory peut donc utiliser la forge ISIMA/LIMOS

gitlab connect

Pour se connecter avec son compte Active Directory l'onglet "LDAP" doit être sélectionné comme sur la copie d'écran ci-dessus

Si vous ne parvenez pas à vous connecter c'est probablement que votre utilisateur LDAP n'a pas la bonne adresse mail. Contactez le responsable du service Active Directory ou GitLab pour corriger le problème

3.2.2 Intervenants extérieurs

La création de compte pour les intervenants extérieurs est soumise à une procédure simple décrite dans la documentation du CRI ISIMA/LIMOS

3.3 Premier pas

gitlab first connection

A votre première connexion tout semble un peu vide: c'est normal!

  • cliquez sur votre avatar par défaut en haut à droite et sélectionner l'option "Settings" (1)

gitlab settings

3.3.1 Mettre un avatar

Uploadez un avatar (2): les avatars par défaut se ressemblent tous et ne sont d'aucune aide visuelle!

Vous pouvez aussi associer un avatar à chacun de vos projets, n'hésitez pas à le faire.

N'oubliez pas de sauver vos modifications en cliquant sur le bouton "save"

3.3.2 Configurer ses clés ssh

Renseigner votre clé ssh vous permettra de ne pas avoir à vous authentifier à chaque fois que vous poussez vos modifications sur la forge

  • sélectionnez l'onglet "SSH Keys" (3)

gitlab settings

  • copiez/collez votre clé publique, située en général dans ~/ssh/id_rsa.pub et qui commence par ssh-rsa dans le champs Key
  • donnez un nom à votre clé dans le champs Title par exemple: "pc portable" ou "fixe du bureau"

Si vous n'avez pas encore de clés ssh lisez ce qui suit ;)

Pour générer des clés ssh à partir d'un terminal linux, Mac Os, ou à partir de git bash sous windows, tapez simplement

ssh-keygen -t rsa

et laissez vous guider (vous pouvez ne mettre aucun mot de passe à votre clé).

Une fois cette commande exéctutée vous trouverez deux fichiers dans le dossier .ssh de votre home directory: id_rsa et id-rsa.pub c'est le contenu de ce dernier qu'il faut copier coller dans l'interface de GitLab.

En savoir plus sur la génération de clés ssh

3.3.3 Utilisateurs et visibilité des dépôts

A chaque projet est associé un ensemble de membres ayant chacun un rôle sur le dépôt.

A chaque rôle correspond un ensemble de permissions.

Par défaut le créateur du projet est le seul membre du dépôt avec le rôle Owner

Il existe 3 degrés de visibilité pour les dépôts

  • private: le projet est visible des seuls membres
  • internal: le projet est visible de tous les utilisateurs de la forge
  • public: le projet est visible par la terre entière

Il existe une notion de groupe qui permet de faciliter la gestion de dépôt par équipe

Les groupes peuvent être créés sur demande

4 Fonctionnalités de Gitlab

4.1 Git

git est un logiciel de gestion de versions décentralisé. C'est un logiciel libre créé par Linus Torvalds, auteur du noyau Linux, et distribué selon les termes de la licence publique générale GNU version 2. En 2016, il s’agit du logiciel de gestion de versions le plus populaire qui est utilisé par plus de douze millions de personnes.

4.2 Markdown

Markdown est un langage de balisage léger créé par John Gruber en 2004. Son but est d'offrir une syntaxe facile à lire et à écrire. Un document formaté selon Markdown devrait pouvoir être publié comme tel, en texte, sans donner l’impression qu’il a été marqué par des balises ou des instructions de formatage.

4.3 Issues

les Issues sont un outil de communication entre les membres d'un dépôt et peuvent aussi être utilisées comme un outil de feedback avec tous les utilisateurs de la forge, voire avec la terre entière

Les issues permettent de

  • discuter l'implémentation
  • faire une demande de nouvelle fonctionnalité
  • poser une question
  • remonter les bugs ou les disfonctionnements
  • obtenir du support

les issues supportent markdown

4.4 wiki

Gitlab met également à disposition un wiki collaboratif par projet

les wiki supportent markdown

4.5 Merge requests

Gitlab propose une méthodologie de travail (workflow) collaborative et industrialisée

Parmis les outils qui font le succès de l'écosystème git ( Github, GitLab)

La notion de "Merge request" dans GitLab, qui fait écho à la notion de "Pull request" dans Github, permet de soumettre des modifications, corrections ou améliorations au code sans être membre du dépôt.

Ce sont les membres du dépôts autorisés qui décident ensuite si la contribution est acceptable et intégrable (mergeable).

4.6 Intégration continue (CI) / livraison continue (DC)

L'intégration continue permet d'éviter les régressions tout au long du cycle de développement

GitLab rend ce processus complètement industrialisable. Grâce à Gitlab CI vous pouvez automatiquement

  • compiler vos sources
    • mettre à disposition le produit de la compilation
  • lancer une suite de tests
  • déployer votre application sur un environnement (test, production)
  • ...

Techniquement deux "runners" docker assurent l'exécution de commandes contenues dans un fichier .gitlab-ci.yml situé à la racine de votre projet.

Cette partie sera développée dans un futur post

4.7 Le reste ...

Gitlab regorge de fonctionnalités, elles ne sont pas toutes détaillées dans ce post car nous sommes loin de les avoir toutes découvertes.

N'hésitez pas à ouvrir une issue sur le dépôt du blog, ou à simplement venir échanger avec les membres du CRI ISIMA/LIMOS si vous avez des questions, des problèmes, des besoins spécifiques:

nous progresserons ensemble!

Quelques liens pour aller plus loin