1
0
contenu/blog/2021/10/30/drone-ci-et-htmltest-pour-traquer-les-liens-morts-dans-hugo/index.md

54 lines
2.2 KiB
Markdown
Raw Normal View History

2023-09-05 23:47:36 +02:00
---
title: "Drone-CI et htmltest pour traquer les liens morts dans Hugo"
date: 2021-10-30
tags: [
"Auto-hébergement",
"SysAdmin",
"Drone-CI",
"Hugo",
"htmltest",
"Docker",
"Gitea",
]
---
Voilà un excellent exemple de ce pourquoi j'ai une stack de publication qui peut
sembler compliquée au premier abord mais qui, au final, permet de faire plein de
choses sympathiques. Si vous voulez en savoir plus, je vous invite à lire les
autres articles que j'ai écrit à ce sujet :
2024-03-11 14:58:44 +01:00
<x-read-more :urls="[
2024-02-11 23:12:58 +01:00
'/blog/2021/09/12/deployer-hugo-via-gitea-et-drone-ci/',
'/blog/2021/10/29/deployer-hugo-via-gitea-et-drone-ci-avec-caddy-et-minio/'
]" />
2023-09-05 23:47:36 +02:00
Rapidement : j'ai Drone-CI qui s'occupe de compiler et publier un site statique
réalisé avec Hugo (le site que vous êtes en train de visiter). Je vais lui
demander d'en faire un peu plus : parcourir le site à la recherche de liens
morts et bloquer la mise en production tant que je ne les ai pas corrigés.
Il suffit de rajouter les quelques lignes suivantes dans le fichier _.drone.yml_
du projet, dans la section _steps_ :
```yaml {class=not-prose}
- name: test_links # Nom de l'étape de la CI
image: wjdp/htmltest # Image docker utilisée
commands:
- htmltest public/ # Dans Drone-CI, le site Hugo compilé se trouve dans public/
```
En plus de vérifier la disponibilité des URLs, [htmltest](https://github.com/wjdp/htmltest)
peut (et va) effectuer d'autres tests utiles et pertinents. Il est possible de
[configurer l'application](https://github.com/wjdp/htmltest#wrench-configuration)
plus en détails, mais le comportement de base de `htmltest` me convient bien.
Un petit "soucis" à noter : cette étape doit survenir **après** le déploiement
en production, faute de quoi les liens vers une page nouvellement créée mais pas
encore déployée seront considérés comme morts. On n'empêchera donc pas les liens
morts d'arriver en production, mais au moins la CI pourra nous alerter de leur
présence.
Évidemment, ça augmente quelque peu le temps de mise en production (je passe de
35 secondes à 3 minutes), mais au moins, plus de liens morts, en seulement
quatre lignes de conf... Simple, pour une fois !