Il y a une semaine, je me suis dit que ça serait sympa de dépoussiérer mon README.md de profil sur Github.

J'apprends énormément de choses tous les jours, du coup mon README.md devient vite obsolète !

C'est peut-être aussi votre cas, et vous n'avez sûrement pas envie comme moi de perdre du temps sur une tâche qui peut être automatisée.

Heureusement, Github met à disposition des actions pour cela.

J'aimerais via cet article vous montrer comment j'ai fait pour dynamiquement changer mon Readme de profil sur Github pour que vous puissiez le faire vous aussi !


Il faut savoir que Github vous permet de créer un repository unique en le nommant comme votre nom d'utilisateur.

C'est un peu votre mur de profil.

Vous pouvez y mettre tout ce que vous souhaitez.

Vos projets externes à Github, vos articles de blog ou ceux qui vous sont indispensables.

Autre avantage, vous pouvez automatiser l'ajout de contenu !

Managing your profile README - GitHub Docs
You can add a README to your GitHub profile to tell other people about yourself.
Voici un lien vers la doc si vous voulez vous y pencher dessus
Basic Syntax | Markdown Guide
The Markdown elements outlined in the original design document.
Petit rappel : Votre README.md est un fichier qui lis le Markdown si vous ne savez pas ce que c'est je vous invite à vous documenter ici.

Pour le mien, j'ai voulu insérer mes 5 derniers articles du blog sur mon README.md

C'est un bon départ pour commencer.

Je vais vous montrer comment j'ai procédé.

J'ai tout simplement inséré dans mon fichier README.md les lignes suivantes, je n'invente rien c'est issu de la documentation, vous verrez plus bas.


<!--START_SECTION:feed-->
Ton contenu sera généré ici grâce à ton action (Supprime moi)
<!--END_SECTION:feed--> 

Ensuite, pour automatiser, comme je le mentionnais plus haut, il vous faut une action qui corresponde à votre besoin.

GitHub - JasonEtco/rss-to-readme: 📡📝 A GitHub Action that updates a section of a README from an RSS feed.
📡📝 A GitHub Action that updates a section of a README from an RSS feed. - GitHub - JasonEtco/rss-to-readme: 📡📝 A GitHub Action that updates a section of a README from an RSS feed.
J'ai choisi celle-ci car elle répond parfaitement à mon besoin d’insérer dynamiquement les 5 derniers articles de mon blog dans mon README.md via mon flux RSS, en plus, elle a l'avantage d'être documentée.

Pour faire appel à cette action, il vous faut créer un workflow dans votre repo.

Vous pouvez alors au choix.

Cloner votre repo et ajouter les dossiers .github/workflows puis à la racine de workflows le fichier votre-action-a-effectuer.yml

Ou directement faire la manip sur Github.

Pour cela, vous allez dans Actions puis, dans Simple Worklow vous cliquez sur configure.

De base, vous arrivez sur un fichier .yml déjà rempli avec votre structure de dossier déjà prête.

Vous pouvez tout supprimer dans le fichier .yml et remplacer le code par celui-ci, ne vous inquiétez pas, je vais vous expliquer chaque élément.

# Donnez lui le nom que vous voulez, c'est le nom de votre action
name: Tuesday updates

# Sur planification je push sur la branche main tout les mardis à 20H UTC
on:
  # Pour tester plus facilement votre workflow vous pouvez enlever la partie schedule
  schedule:
    # Once every Tuesday at 8 PM
    - cron: 0 20 * * 2
  # Fin de la partie schedule
  push:
  # vous pouvez ajouter plusieurs branches dans un tableau si vous le souhaitez 
    branches:
      - main
# C'est ici que vous allez dire ce que vous lui faites faire
jobs:
  # Cette partie là est liée à Github, l'action va lancer sur une VM
  updates:
    name: Update README
    runs-on: ubuntu-latest
    # Vous pouvez déterminer des étapes
    steps:
      - name: Update this repo's README
        # SUPER IMPORTANT !
        # C'est grâce à cette action que vous pouvez update votre readme
        uses: JasonEtco/rss-to-readme@v1
        # Vous utilisez cette action au dessus avec des paramètres
        with:
          # Votre point d'entrée
          feed-url: https://www.mon-point-dentre.com/rss
          # Votre clé de section similaire à celle dans votre readme
          readme-section: feed
          # Commits vides
          empty-commits: "false"
          # Votre Branche, par défaut c'est master
          branch: main
          # Votre Template pour appeler les valeurs issues des clés
          template: "#### [{{ title }}]({{ link }}) \n<em>{{ contentSnippet }}</em>\n\n"

Crontab.guru - The cron schedule expression editor
An easy to use editor for crontab schedules.
Si vous n’êtes pas à l'aise avec le cron, voici une ressource qui vous permet de visualiser la correspondance de chaque astérisque (*)

Petite parenthèse, Jason Etcovitch, le créateur de l'action rss-to-readme utilise le module rss-parser pour former les données en sorties, si vous souhaitez vous documenter voici le lien.

GitHub - rbren/rss-parser: A lightweight RSS parser, for Node and the browser
A lightweight RSS parser, for Node and the browser - GitHub - rbren/rss-parser: A lightweight RSS parser, for Node and the browser

Voici les clés les plus importantes à connaître pour manipuler votre flux de données.

  • title est le titre de votre post
  • link est le lien vers votre post
  • pubDate est la date de publication de votre post
  • content est le contenu dans sa totalité
  • contentSnippet est l'extrait ou la description succincte si vous préférez.

Maintenant que vous avez tout ça.

Vous pouvez structurer votre template dans votre fichier .yml et profiter de l'automatisation de votre README.md en validant votre commit.

github-actions push pour vous dès qu'il y a du changement à appliquer

Voila ! Amusez-vous et expérimentez car les possibilités sont quasi infinies avec les actions.

Ici, je vous ai montré comment mettre à jour dynamiquement votre README.md pour y afficher des articles issus d'un flux RSS mais c'est tout à fait applicable à un projet.

Vous pouvez automatiser par exemple la publication de changelog directement sur votre Readme de projet via un webhook sur votre logiciel de gestion de projet.

En bref,  y'a matière à s'éclater, la seule limite est celle qu'on se fixe.


Dites moi si vous avez trouvé ce petit tuto sympa, j'en partagerais sûrement d'autres.

N'hésitez pas à le partager autour de vous et à vous abonner, ça m'aide :)

A bientôt !

Ne perdez plus votre temps à remplir votre Readme manuellement grâce aux actions

Il y a une semaine, je me suis dit que ça serait sympa de dépoussiérer mon README.md de profil sur Github.