Publier automatiquement ses nouveaux articles sur le moteur de blog Pelican avec Git
J'ai parlé récemment d'un script qui permet de poster automatiquement un tweet quand je publie un nouvel article sur le blog.
Ce script a été un peu modifié puisqu'il fait aujourd'hui 4 choses :
- Il vérifie si un nouvel article a été écrit (en cherchant la présence du message
[POST]
au début du message de commit Git) ; - Dans ce cas, il envoie les nouveaux commits sur le dépôt Git défini par défaut ;
- Il met à jour le blog sur le serveur via SSH (commande
make ssh_upload
pour les Pelican-eux) ; - Il envoie un tweet.
Tout ça c'est sympa, mais c'est un peu con d'automatiser toutes ces étapes si il faut au final lancer le script à la main. La magie de Git fait qu'on peut automatiser tout ça en utilisant les hooks de Git.
Ces hooks sont des scripts que Git lance après (ou avant) certaines étapes de son processus. Ils sont listés dans le répertoire .git/hooks/
:
╭────<quack@spiderman >───< ~/Documents/writing/blog/quack1_pelican > ‹master*› ╰───[18:52:40] $ ls .git/hooks applypatch-msg.sample post-commit pre-applypatch.sample prepare-commit-msg.sample update.sample commit-msg.sample post-update.sample pre-commit.sample pre-rebase.sample
Je ne vais pas tous les faire, les noms sont assez explicites, mais par exemple pre-commit
est lancé avant le commit.
Mon script a besoin que le commit soit terminé, donc j'ai fait pointer le fichier .git/hooks/post-commit
sur le script. Toute la configuration nécessaire est placée dans le fichier de conf, donc le script se lance sans souci :
╭────<quack@spiderman >───< ~/Documents/writing/blog/quack1_pelican > ‹master*› ╰───[18:53:14] $ ln -s ~/work/workspace/python/pelican_auto_tweet/pelican_auto_tweet.py .git/hooks/post-commit
Désormais dès que vous ferez un commit dans ce dépôt Git, le script se lancera et si toutes les conditions sont réunies, votre blog se mettra à jour, et un tweet sera posté !
Le dépôt GitHub du projet est à jour, et possède déjà quelques issues que j'avais trouvé sur les scripts et que je dois corriger. Si vous utilisez les scripts, et que vous trouvez des bugs, n'hésitez pas à me les remonter, je corrigerais ça rapidement !