mazhe
mazhe copied to clipboard
Integration continue & release automatique
Avez-vous déjà étudié la possibilité d'utiliser un outil d'intégration continue (Travis, Circle-CI, Appveyor ...) pour générer les PDFs automatiquement à chaque push/PR, faire d'éventuelles vérifications et publier les PDFs dans la page release de github?
J'ai fait un essai avec Travis: Les builds: https://travis-ci.org/ColinPitrat/mazhe/builds La page de releases: https://github.com/ColinPitrat/mazhe/releases
Un avantage pourrait être d'ajouter un certain nombre de vérifications (comme les références vers l'avant, que je n'ai pas réussi à faire fonctionner pour l'instant à cause de https://github.com/LaurentClaessens/pytex/issues/1).
Il y a déjà plusieurs choses en place, mais c'est un peu "fait maison".
pour les tests
Pour tester plein de choses, il y a le script testing.sh
Il fait un petit jeu de
git stash
git clone
[travail dans le nouveau répertoire]
git stash apply
pour être sûr qu'il compile tout dans un répertoire sans 'aux', 'idx', etc.
Il teste entre autres :
- des expressions régulières pour mes fautes d'orthographe les plus courantes.
- les références vers le futur
- que la référence biblio MonCerveau arrive bien en avec le numéro [1] (parce que c'est pour le lecteur un indice de passage qu'il vaut mieux lire encore plus attentivement)
Il y a même une fonction pour tester les liens morts dans la biblio, mais finalement on a décidé de ne plus s'en inquiéter. On en a parlé ici.
Version
pytex
fait un joli hack d'un fichier source pour indiquer le commit courrant dans la source LaTeX avant la compilation.
Le sha1 du commit arrive sur la page 1 du PDF.
publication
Là c'est du "organisation personnelle". J'ai 3 répertoirres :
- frido
- giulietta
- master
Seul 'master' est connecté à github.
Ensuite j'ai un script 'deploy.sh' qui :
- git pull de frido vers master
- git pull de giulietta vers master
- git push de master vers github
- fait toutes les compilations dans master
- copie les résultats vers mon répertoire chez OVH grâce à un sftp (qui a ma clef publique)
la suite
J'aime bien avoir un peu de souplesse par rapport aux tests. Par exemple pendant que je suis en train de travailler sur quelque chose, je veux pouvoir publier les résultats intermédiaires, même si je sais qu'il y a encore des références vers le futur.
PS : j'ai publié un patch sur pytex
pour ajouter le fichier manquant.
pytex marche pour moi maintenant, merci. Est-ce que l'utilisation de travis pour la publication automatique sur GitHub (ou ailleurs, le sftp devrait pouvoir se faire: https://docs.travis-ci.com/user/deployment/custom/) te parait intéressante du coup ou pas ? Si oui je peux peaufiner ma branche travis et envoyer une PR. Sinon on peut fermer le ticket :-)
Oui, je crois qu'on peut fermer. Pour l'instant, ma chaine fonctionne bien ... en tout cas chez moi.
En tout cas , merci de t'en préoccuper. Ça sera peut-être utile un jour.
Le HOTT book, qui est certainement un modèle à suivre, utilise effectivement Travis : https://github.com/HoTT/book/wiki/Nightly-Builds https://homotopytypetheory.org/book/