Automatisation : gitea, hugo et ssh
Préambule
Nous souhaitons créer un blog avec un outil de génération de site statique. L’outils sélectionné est hugo.
Sur ce type de site, on crée une page en éditant un fichier texte simple avec la synthaxe Markdown. Ensuite, on lance le générateur et un site en HTML est généré.
Je ne compte pas rentrer dans les détails de l’utilisation et de la génération de page avec hugo mais plutot la façon dont on peut mettre en place une automatisation des actions à l’aide d’outils d’intégration continu.
A la fin, nous serons en mesure d’éditer directement le blog depuis gitea.
Modélisation
+-----+ +--------+ +-------+
|Gitea+---------->+Drone.io+----------->+serveur|
+--+--+ +--------+ |web |
^ +-------+
|
|
+---+-------+
|Depot local|
+-----------+
- gitea : une “surcouche graphique”/serveur git
- drone.io : un moteur d’integration continu
- un serveur web : qui va héberger le site et qui est accèssible via ssh
- un dépot local
Je vous renvoi vers la mise en place de gitea et drone.io disponible sur mon blog.
Mise en oeuvre
Tous va se résumer à mettre en place le fichier .drone.yml
suivant :
---
kind: pipeline
name: Génération du site
steps:
- name: build
image: plugins/hugo
settings:
hugo_version: 0.57.2
pull: always
validate: true
- name: publish
image: appleboy/drone-scp
settings:
host:
from_secret: ssh_host
user:
from_secret: ssh_user
key:
from_secret: ssh_private_key
port:
from_secret: ssh_port
target:
from_secret: ssh_path
source:
- /drone/src/public/*
strip_components: 3
overwrite: true
Conclusion
C’est un minimum biensur, on pourrait rajouter quelques outils pour vérifier la synthaxe par exemple.
A la suite de quoi, à chaque nouveau commit, la nouvelle version sera poussé vers le site automagiquement et comme on peut éditer le code dans l’interface de gitea… le tour est joué.