Comment remercier ses contributeurs sur GitHub ?
Tags: githunt, hacktoberfest, opensource, tutorial
Published: 2021-12-06 06:50:56

Fin octobre, j’ai initié un projet GitHub pour lister les différentes communautés nantaises. Et les contributions sont rapidement arrivées 💪 🙏 ! Comme dans la plupart des projets open source, le remerciement s’effectue en listant les contributeurs et c’est la moindre des choses que je pouvais faire pour les remercier.

Au lieu de le faire manuellement à chaque contribution et de trouver une représentation graphique sympa, j’ai effectué quelques recherches et je suis rapidement tombé sur ce robot [*all-contributor*](https://github.com/all-contributors/all-contributors). Il permet de lister les contributeurs dans un fichier, par défaut le README.md, avec leur identifiant GitHub et leur photo de profil. Le robot affiche également le nombre de contributeurs sous la forme d’un compteur.


![Visualisation du nombre de contributeurs sur ce projet](http://jeanphi-baconnais.gitlab.io/img/botgithub-nb-contrib.png)


![Visualisation du tableau des contributeurs](http://jeanphi-baconnais.gitlab.io/img/botgithub-contributeurs.png)

Ce résultat est obtenu par des *pull request* que le robot a automatiquement créé suite à des commandes positionnées dans des issues ou des pull request par un mainteneur du projet.

Un `@all-contributors please add @<pseudo-github> for <something>` permet de solliciter le robot et d’ajouter une personne via son pseudo GitHub pour une action qu’il a effectuée (représentée par <something> dans l’exemple). La liste des actions prévues par all-contributor sont listées sur cette page : https://allcontributors.org/docs/fr/emoji-key.

Le bot détecte cette phrase, crée automatiquement une pull request pour incrémenter le nombre de contributeurs et ajouter le nom du contributeur et sa photo de profil dans le tableau des contributeurs. Rapide et simple ! 

![Illustration de l’interaction avec le robot](http://jeanphi-baconnais.gitlab.io/img/botgithub-bot.png)

Dans le README.md, ces deux parties doivent pouvoir être identifiables par le robot et cela se passe par l’intermédiaire de *tags* :

pour le compteur, il suffit de positionner ceci :

```
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
<!-- ALL-CONTRIBUTORS-BADGE:END -->
```

pour le tableau des contributeurs :

```
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<table>
</table>
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
```

C’est avec ces informations que le robot retrouve les emplacements à modifier.

Si vous souhaitez afficher ces informations dans un autre fichier que le README.md principal, cela est possible. Le robot se base sur un fichier de configuration `.all-contributorsrc` à placer dans votre projet. Ce fichier permet de renseigner le nom du document où renseigner les contributions, la taille des photos de profil, le nombre de contributeurs par ligne et un template d’affichage de chaque contributeur. Voici un exemple de base :

```
{
  "files": [
    "README.md"    
  ],
  "imageSize": 100,
  "contributorsPerLine": 7,
  "contributorsSortAlphabetically": false,
  "badgeTemplate": "[![All Contributors](https://img.shields.io/badge/all_contributors-<%= contributors.length %>-orange.svg?style=flat-square)](#contributors)",
  "contributorTemplate": "<a href=\"<%= contributor.profile %>\"><img src=\"<%= contributor.avatar_url %>\" width=\"<%= options.imageSize %>px;\" alt=\"\"/><br /><sub><b><%= contributor.name %></b></sub></a>",
  "types": {
    "custom": {
      "symbol": "🔭",
      "description": "A custom contribution type.",
      "link": "[<%= symbol %>](<%= url %> \"<%= description %>\"),"
    }
  },
  "skipCi": true,
  "contributors": [],
  "projectName": "xxxx",
  "projectOwner": "xxxxx",
  "repoType": "github",
  "repoHost": "https://github.com"

```

💡 Si vous avez une CI sur votre projet, pensez bien à positionner la valeur “true” au paramètre “skipCi”, cela vous fera économiser des traitements.

Une interface en ligne de commande (CLI) est également disponible. Installable comme toute bibliothèque via npm ou yarn, l’ajout de contributeur se fait alors avec cette commande `yarn all-contributors add <pseudo-github> <something>`.

Un bot simple d’installation et d’utilisation qui permet de remercier vos contributeurs comme il se doit 💪

ℹ️ Pour plus d’informations, voici la page de documentation du projet : https://allcontributors.org/docs/fr/overview