66 lines
2.7 KiB
Markdown
66 lines
2.7 KiB
Markdown
|
---
|
||
|
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
|