Hugo - bonnes pratiques

Hugo et bonnes pratiques

Hugo est un générateur de site, simple, flexible et pratique.

Mais travailler proprement, c’est encore mieux.

L’objectif de cette fiche c’est de réunir des bonnes pratiques sur l’organisation et les usages autour d’Hugo.

Au terme de l’évolution de cet article, nous aurons un site dont le contenu est séparé du moteur, en intégration continue et en publication continue.

Par ou on commence ?

Hugo, c’est un simple binaire. On peut le mettre n’importe ou.

Ce type d’utilitaires en dehors de la distribution - binaires statiques, je les stocks dans un répertoire ~/bin et je modifie le PATH de mon shell.

Configuration, thèmes et contenu

git pour les gouverner tous

Chaque catégorie d’éléments à un cycle de vie différent, des accès différents, des règles de sauvegarde différents etc..

  • le fichier de configuration du site évolue peu, les fichiers assets ont une vie différente du thème choisi
  • la rédaction d’articles peut se faire à plusieurs, utiliser des branches, des MR ou pour les gros sites, des accès différents entre les personnes en charge du design et les rédacteurs est probable

Il est donc important de les séparer autant que possible.

J’utilise un répertoire ~/git pour stocker tout mes dossiers gérés par git, ou les projets que je suis. Ça facilite les recherches, et mises à jour.

Ainsi, pour un site internet je vais avoir :

~/git/atlanticaweb.fr
~/git/atlanticaweb.fr/themes/theme_en_sumodule
~/git/content_atlanticaweb.fr => dossier contenant les pages et les posts du site

gitignore

Tout ne doit pas être géré par git. Un site Hugo génère des fichiers ressources et des fichiers constituant le site internet. Ces derniers étant construit à partir du dossier content nous avons aucune raison d’assurer un suivi.

Le fichier gitignore se résume donc à :

ressource
public

sauvegardes

La sauvegarde d’un site hugo, doit inclure les éléments suivants :

  • répertoire du site
  • répertoire du contenu
  • le binaire hugo qui à permis de générer le site

Ce qui donne :

  • Initialisation du repo

    ~/bin/restic -r sftp:backup:/home/alexandre/backup/atlanticaweb.fr init

  • Sauvegarde du site

    /bin/restic -r sftp:backup:/home/alexandre/backup/site-atlanticaweb.fr backup –exclude-if-present .git –exclude .git ~/bin/hugo git/content-atlanticaweb.fr git/atlanticaweb.fr

Ce qui reste à faire

  • Programmer la sauvegarde via systemd
  • Mettre en place un linter pour le markdown
  • Faire de l’intégration continue avec drone
  • Faire notre politique de déploiement
  • Automatiser la mise en place de tout ça via Bolt
Licensed under CC BY-NC-SA 4.0
Généré avec Hugo
Thème Stack conçu par Jimmy