Using R package source files in packrat (rather than CRAN) with Travis-CI

前端 未结 1 2038
别那么骄傲
别那么骄傲 2020-12-29 13:34

I\'m working with an R package that is an RStudio project, and I\'m using packrat to keep a local copy of the source of the packages I depend on for my project.

I\'

相关标签:
1条回答
  • 2020-12-29 14:09

    After much trial and error and further reading, it seems that this will do it, with a .travis.yml file like this:

    # 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
    

    The key lines in the above file are:

    install:
      - R -e "0" --args --bootstrap-packrat
    

    This will start R, and builds the R packages in the local packrat directory so that they are available in the Travis machine.

    After that, travis will continue and attempt to build the package, and will not need contact CRAN to get the dependencies because they are already available (assuming packrat is working as expected).

    I discovered this trick here: https://travis-ci.org/ChowHub/paper-pattern-similarity/builds/127262823 and at https://github.com/rstudio/packrat/issues/158. I've got it working here: https://travis-ci.org/benmarwick/mjbtramp/builds/157747326

    The advantage of this is we can build on travis with the exact same packages that we're using locally. We don't have to get the latest packages from CRAN when we build on travis, now we can have more control of the package versions that travis builds with in our project.

    The disadvantage is that the build time on travis is substantially increased. One of my projects went from 2-3 mins to 13-15 mins after switching to packrat.


    UPDATE After Noam's question below and Jim's comment, it seems we can cache the packrat packages using cache: like this:

    # 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
    

    In my use-case, this has reduced the times substantially, back to 1-2 mins.

    0 讨论(0)
提交回复
热议问题