Closed RLesur closed 5 years ago
Bon, là j'avoue que je ne comprends pas ce qu'il se passe ici https://travis-ci.org/MTES-MCT/parcours-r/builds/575115230#L1215-L1222
edit: résolu par https://github.com/MTES-MCT/parcours-r/pull/9/commits/9dfa0a9d4dbd776a9a192f32097b0f725697b78a
Bon, j'ai bien galéré et verdict : ça ne marche pas comme je pensais. Le cache de Travis ne permet pas à make de zapper les gitbooks qui n'ont pas changé. Je continuerai de regarder s'il y a une solution. Pour l'instant, je ferme cette PR.
Après avoir lu ça, https://docs.travis-ci.com/user/caching/ Je réalise que ça ne pouvait pas fonctionner au travers d'une PR. Pour voir si ça fonctionne réellement, il faudrait merger cette PR et relancer un build pour voir si le cache est utilisé. Mais si vous trouvez que ça met trop le bazar dans votre projet, je comprendrais que vous ne préféreriez pas merger.
Bon, ben ça a y est j'ai compris que l'approche avec make était infructueuse. En fait, j'avais fait l'hypothèse implicite que git conservait la date de modification des fichiers et évidemment, cette hypothèse est fausse. Elle a précisément été prise pour qu'il y ait un peu plus souvent de make de faits que pas assez. C'est une approche défensive.
Bon, ben au moins j'aurai appris quelque chose avec ça. Je ferme la PR.
Mais pour autant, je ne m'avoue pas vaincu, car j'ai une autre idée pour limiter le temps de build :smile:
Bon, ben j'ai un truc qui marche bien, mon bac à sable est ici : https://github.com/RLesur/mkbkdwn
L'approche est la suivante :
_book
générés_book
, on planque un petit fichier qui trace, pour chaque fichier source, le sha du dernier commit https://github.com/RLesur/mkbkdwn/blob/gh-pages/_book/sha.csvLe script principal est là : https://github.com/RLesur/mkbkdwn/blob/master/script.R
Si ça vous intéresse, je peux vous faire une PR sur cette base.
Alors, j'ai fait un makefile relativement générique pour un projet bookdown :
Il est réutilisable dans le cadre de n'importe quel projet bookdown et s'utilise comme suit (dans le terminal) :
L'intérêt de l'utilisation de make est de ne reconstruire les gitbooks et pdf que si un fichier
Rmd
a une date de sauvegarde ultérieure aux fichiers générés. Si les fichiersRmd
n'ont pas changé, aucune génération n'est effectuée.Au niveau de la racine du repo, j'ai fait un Makefile "maître", qui lance en parallèle le make gitbook de chaque module. Seuls les modules pour lesquels au moins un des fichiers Rmd a changé seront reconstruits :
Si on se trouve à la racine de parcours-r, les commandes suivantes peuvent être utilisées dans le terminal :
Dans le contexte de Travis, cela impose de conserver les fichiers générés entre chaque build (sinon make reconstruira systématiquement les gitbooks et l'apport sera nul). Pour cela, la solution utilisée dans bookdown est de mettre les fichiers en cache : https://github.com/rstudio/bookdown/blob/a48ead0ba601779c6443203ef02dcac959e5c3f6/.travis.yml#L4-L8
Je ne l'ai jamais tenté jusqu'ici. Logiquement, le premier build sera long car il n'y aura pas de cache. Et les suivants devraient être beaucoup plus rapides (si tout fonctionne comme prévu, mais avec Travis, on ne réussit jamais du 1er coup :smile: )