Vérification automatisée de la syntaxe des liens web#
En Markdown, il est facile de faire des erreurs au moment d'insérer un hyperlien avec des questionnements HVE (Haute Valeur Existentielle) : s'il est interne, doit-il être relatif ou absolu ? Dois-je préciser le protocole ou bien cela est-il déterminé par le navigateur ? L'URL est entre les parenthèses ou les crochets ?
En plus de faire un mauvais choix, on s'expose aussi aux fautes de frappe qui mènent à un lien cassé. Et là c'est 404 drames !
C'est pourquoi une vérification des liens est exécutée régulièrement et automatiquement sur les contenus Geotribu, à l'aide de linkchecker, un utilitaire développé en Python et utilisable en ligne de commande (CLI).
Configuration#
Les possibilités de configuration de l'outil sont impressionnantes ! Elles prennent place dans un fichier .lincheckrrc
(format .ini
) qui est à la racine du dépôt Git du site :
Fichier .linkcheckrrc | |
---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
Explication :
- on utilise jusqu'à 100 threads pour paralléliser les requêtes
- on ignore certains liens ou fichiers, ici les fichiers des flux RSS et modèles
- on indique le format et l'emplacement du fichier de sortie
Utilisation en local#
- Disposer de l'environnement de travail en local : voir cette page
- Générer le site web de Geotribu
-
Installer le package :
1
python -m pip install --upgrade "LinkChecker>=10"
-
Lancer LinkChecker :
1
linkchecker build/mkdocs/site/ --config .linkcheckrrc --no-warnings
Si cela vous intéresse, déplier pour voir à quoi ressemble la sortie :
Sortie de l'exécution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
|
Exécution automatisée sur la CI#
Pour soulager la charge mentale des gentils bénévoles, la vérification est exécutée automatiquement dans la CI et une notification est envoyée uniquement si des erreurs sont trouvées.
Étant donné que l'exécution est assez longue et nécessite de générer tout le site avant, j'ai opté pour une exécution trimestrielle plutôt que sur chaque Pull Request ou commit.
Les résultats des exécutions sont visibles sur le dépôt du site. Voici la configuration pour les curieux/ses :
Workflow GitHub Actions
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
|
Ressources#
- LinkChecker dispose également d'une interface graphique : https://github.com/linkchecker/linkchecker-gui
Remerciements et crédits#
Merci à mon collègue Thomas Muguet pour avoir mis cet outil en place pour le wiki interne à Oslandia et son aide pour accélerer la prise en main.
-
étape où un contributeur propose d'intégrer ses modifications dans le socle principal du projet. Voir la documentation de GitHub. ↩