-->

Building R packages with Packrat and AppVeyor

2020-07-14 05:49发布

问题:

Can someone point me towards a working example where packrat is used with AppVeyor to build an R package? Searching through Google and GitHub, I can't find any packrat-enable package that uses AppVeyor.

Does the appveyor.yml file need to change? Are there some settings I need to add through the AppVeyor website?

I have a very minimal package (testthat is the only dependency) that broke AppVeyor builds. Here is the code frozen for that commit. Here is the AppVeyor log.

(If this SO question sounds familiar, I'm about to ask a similar question for Travis-CI.)

回答1:

Yes, the solution here is similar to the same question for Travis-CI.

Here's an example of an appveyor.yml file that will enable you to use packrat packages in your package:

# DO NOT CHANGE the "init" and "install" sections below

# Download script file from GitHub
init:
  ps: |
        $ErrorActionPreference = "Stop"
        Invoke-WebRequest http://raw.github.com/krlmlr/r-appveyor/master/scripts/appveyor-tool.ps1 -OutFile "..\appveyor-tool.ps1"
        Import-Module '..\appveyor-tool.ps1'
install:
  ps: Bootstrap

# Adapt as necessary starting from here

environment:
  global:
   WARNINGS_ARE_ERRORS: 0
   USE_RTOOLS: true

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

test_script:
  - travis-tool.sh run_tests

on_failure:
  - 7z a failure.zip *.Rcheck\*
  - appveyor PushArtifact failure.zip

artifacts:
  - path: '*.Rcheck\**\*.log'
    name: Logs

  - path: '*.Rcheck\**\*.out'
    name: Logs

  - path: '*.Rcheck\**\*.fail'
    name: Logs

  - path: '*.Rcheck\**\*.Rout'
    name: Logs

  - path: '\*_*.tar.gz'
    name: Bits

  - path: '\*_*.zip'
    name: Bits

The important parts that differ from the template are:

 environment:
      global:
       WARNINGS_ARE_ERRORS: 0
       USE_RTOOLS: true

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

This enables Rtools for the build, and loads the packrat packages.

It's also important to note that we are excluding - travis-tool.sh install_deps because that would cause the packages you depend on to be downloaded from CRAN, rather than built from your packrat directory.

Here's an example of an appveyor build for a simple R package where this is working: https://ci.appveyor.com/project/benmarwick/javaonappveyortest/build/1.0.21