Mettre en oeuvre des Github Actions utiles pour un site hébergé sur Github pages
1 Pourquoi mettre en oeuvre des GITHUB ACTIONS ?
Comme j’ai pu l’expliquer dans mon précédent article, je suis passé de Wordpress à GITHUB Pages.
Une fois le site déployé une première fois, on voit qu’on a perdu pas mal d’automatisations qui sont réalisées par défaut dans Wordpress. Par exemple, vous devez construire votre site, publier des nouveaux articles et vérifier que tout est OK.
J’ai donc mis en oeuvre des GITHUB ACTIONS pour automatiser le plus d’actions possibles et me passer de tâches manuelles souvent rébarbatives.
Si vous souhaitez découvrir les GITHUB ACTIONS, je vous conseille ce site.
2 Construction du site et déploiement
Dès qu’on touche à Jekyll et à l’hébergement sur Github Pages, on tombe sur certaines actions à réaliser telles que celle-ci:
|
|
J’ai donc réalisé les workflows suivants:
2.1 Pour une feature branch (dans une Pull Request)
Je construis le site sans le déployer pour vérifier que la construction est correcte.
|
|
Voila ce que ce workflow réalise:
- Il est exécuté à chaque push excepté sur les branches main et gh-pages. Ce sont les branches que j’utilise pour le déploiement du site après la validation d’une pull request.
- Checkout du projet
- Initialisation de Ruby et téléchargement des dépendances comme le ferait la commande
bundle install
. - Construction du site
2.2 Pour la branche main
Une fois que la pull request est validée, le code est poussé dans la branche main. On y exécute le code suivant:
|
|
Ce dernier reprend le code du workflow suivant ( oui, j’aurai pu faire des workflows réutilisables… ) et ajoute l’étape de déploiement.
Le code généré sera copié dans la branche gh-pages
.
3 Publication d’un article
Pour rédiger un article, j’utilise le mécanisme de feature branch et pull request. Pour automatiser la publication, le nommage des articles avec la date etc, j’ai mis en oeuvre le workflow suivant:
Je rédige les articles (comme celui-ci) et les positionne dans le répertoire _drafts
:
|
|
J’associe un milestone à la pull request.
Dès que ces derniers sont terminés, le workflow décrit ci-dessous est exécuté. Il permet, via un script python de:
- Identifier les articles dans le répertoire
_drafts
- Vérifier que la date de publication spéficié dans l’en-tête est antérieure à la date courante (
now()
) - Copier le fichier dans le répertoire
_posts
en le renommant avec la date en préfixe.
|
|
Explication:
- Déclenchement manuel ou à la clôture d’un milestone
- Récupération de la branche
main
- Installation de packages python
- Exécution du script python réalisé pour l’occasion
- Commit et push
Une fois ce workflow réalisé, le workflow vu précédemment est automatiquement lancé et le site est généré une nouvelle fois. Bon ça fait deux constructions, mais au vu du temps pris, c’est négligeable.
4 Uptime
J’aurai pu utiliser un tiers service tel que uptime robot.
Pour mon besoin, j’ai préféré opter pour un appel régulier du site et une vérification du code HTTP (200
).
|
|
Explications
- Déclenchement toutes les heures de ce workflow
- J’ai utilisé une GITHUB ACTION existante qui ping une URL et vérifie le code retour. Dans mon cas, j’ai utilisé l’URL du fichier robots.txt et je vérifie le code retour.
5 Conclusion
J’ai réussi à plus ou moins automatiser tout le cycle de construction d’articles. C’est encore perfectible et loin de certaines fonctionnalités de Wordpress, mais je n’en ai pas réellement besoin.
Si vous souhaitez réutiliser ces workflows et les intégrer dans sites, vous pouvez les récupérer sur ce repo GITHUB.