Automatiser le déploiement de ce site

Rédigé par Alexandre le 07/11/2022

Mis à jour le 09/11/2022

#ansible #droneci #gitea #automatisation #autohébergement

Comme d'habitude, mon silence ne reflète pas mon inaction. Cette fois, c'est le déploiement de ce site que j'ai souhaité totalement automatiser, de son code à sa livraison.

Lors de l'envoi de modifications du dépôt local Git vers la forge logicielle Gitea, l'automatisation se lance. L'automatisation, appelée pipeline dans ce contexte, fonctionne via un fichier de configuration lu et interprété par Drone CI. L'exécution est assurée par un client appelé "runner" que j'ai voulu de type "exec". J'ai choisi que ce runner exécute des playbook Ansible afin que toute la partie "action" soit gérée par le même outil.

L'objectif principal de ce chantier est de me permettre de gagner du temps notamment pour le futur chantier de mise à jour d'HuGO, le générateur de site statique utilisé ici.

C'est bien beau tout ça, mais comment ça fonctionne ?

Les pré-requis sont au nombre de deux :

  • disposer d'une forge logicielle compatible avec Drone CI (liste)
  • au moins un runner à choisir en fonction de vos compétences et/ou affinités (liste)

Comme je l'ai dit dans l'entête, j'ai choisi Gitea en tant que forge logicielle et deux runner de type exec. Ces trois éléments fonctionnent dans des conteneurs LXD.

Une fois tout branché correctement et mon dépôt activé dans Drone CI, je peux me pencher sur l'écriture de mon automatisation, appelée pipeline dans ce contexte. La pipeline que j'ai écrite exécute des commandes ansible-playbook pour effectuer l'ensemble des tâches nécessaires pour déployer www.ykn.fr. Voici en image les différentes étapes réalisées :

Capture d'écran des étapes exécutées par la pipeline

J'ai souhaité que la pipeline ne soit exécuté que lorsque les événements suivants surviennent :

  • cron : tâche planifié dans Drone CI
  • custom : lors d'un lancement manuel via Drone CI
  • promote : lorsque la tâche est promue via Drone CI (pas encore exploité, mais j'ai des idées)
  • push : lorsque du code est poussée ou qu'une demande de fusion (MR) est fusionnée (merge) sur Gitea

Ainsi, les événements choisis me permettent de générer le site toutes les nuits et à chaque modification de son code source. A titre d'information, générer le site chaque nuit permet l'application des thèmes de couleur événementiels comme pour l'Octobre rose ou encore la fête de la Saint-Patrick.

En guise de conclusion, les curieux pourront trouver ici une version figée (non maintenue) de la définition de la pipeline Drone CI et du playbook Ansible que j'ai utilisé au moment de la rédaction de cet article.