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é.