mazhe icon indicating copy to clipboard operation
mazhe copied to clipboard

Integration continue & release automatique

Open ColinPitrat opened this issue 5 years ago • 4 comments

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

ColinPitrat avatar Sep 22 '19 13:09 ColinPitrat

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.

LaurentClaessens avatar Sep 23 '19 10:09 LaurentClaessens

PS : j'ai publié un patch sur pytex pour ajouter le fichier manquant.

LaurentClaessens avatar Sep 23 '19 10:09 LaurentClaessens

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 :-)

ColinPitrat avatar Sep 28 '19 20:09 ColinPitrat

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/

LaurentClaessens avatar Sep 30 '19 18:09 LaurentClaessens