Po wielu prób i błędów i dalszego czytania, wydaje się, że to będzie to zrobić z plikiem .travis.yml
jak ten:
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: R
sudo: false
cache: packages
install:
- R -e "0" --args --bootstrap-packrat
warnings_are_errors: false
Kluczowe linie w powyższym plików:
install:
- R -e "0" --args --bootstrap-packrat
Spowoduje to uruchomienie R i zbuduje pakiety R w lokalnym katalogu packrat, dzięki czemu będą dostępne na komputerze Travis.
Po tym, travis będzie kontynuował i próbował zbudować pakiet i nie będzie potrzebował kontaktu z CRAN, aby uzyskać zależności, ponieważ są już dostępne (zakładając, że pakiet działa zgodnie z oczekiwaniami).
Odkryłem tę sztuczkę tutaj: https://travis-ci.org/ChowHub/paper-pattern-similarity/builds/127262823 i https://github.com/rstudio/packrat/issues/158. Pracuję tutaj: https://travis-ci.org/benmarwick/mjbtramp/builds/157747326
Zaleta tego możemy zbudować na travisie z dokładnie tymi samymi pakietami, których używamy lokalnie. Nie musimy pobierać najnowszych pakietów z CRAN, gdy budujemy na travisie, teraz możemy mieć większą kontrolę nad wersjami pakietów, które travis buduje w naszym projekcie.
Wadą jest to, że czas budowy na travisie jest znacznie zwiększony. Jeden z moich projektów przeszedł od 2-3 minut do 13-15 minut po przejściu na packrat.
UPDATE Po pytaniu Noam jest poniżej i Jim's comment, wydaje się, możemy buforować pakiety packrat pomocą cache:
tak:
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: R
sudo: false
cache:
directories: $TRAVIS_BUILD_DIR/packrat/
packages: true
install:
- R -e "0" --args --bootstrap-packrat
warnings_are_errors: false
W moim użytkowej przypadku ta zmniejszyła czasów znacznie, z powrotem do 1-2 minut.
Czy trwa ten długi czas budowy? A może pakiety są buforowane po pierwszej kompilacji? –
Dobre pytanie, tak, wydaje się, że czasy są stabilne i wysokie, gdy używasz pakietu packrat. Oto moje podsumowania kompilacji przypadków użycia: https://travis-ci.org/benmarwick/mjbtramp/builds, [jedna kompilacja, w której wyłączyłem packrat] (https: // travis-ci.org/benmarwick/mjbtramp/builds/157751062) specjalnie po to, by zobaczyć, że czas przychodzi w niecałe 2 minuty, a reszta, używając packrat, 13-18 minut. Pakiety buforujące zbudowane z pakietu packrat prawdopodobnie pomogłyby! – Ben
Buforowanie jest możliwe! Zaktualizowałem swoją odpowiedź, aby pokazać, jak – Ben