commit f456ac362a8a782526bb7fc1df386f41526c61cb Author: Alexandre LUCAZEAU Date: Mon Mar 29 08:46:11 2021 +0200 Init diff --git a/post/hugo-BP.md b/post/hugo-BP.md new file mode 100644 index 0000000..93b06cf --- /dev/null +++ b/post/hugo-BP.md @@ -0,0 +1,65 @@ +--- +title: "Hugo - bonnes pratiques" +date: 2021-03-28T11:48:56+02:00 +draft: false +--- +# 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