Travis CIでRがsudo: falseで使えるようになったので試してみた

ちょっと前にRStudioのブログにそんな話が出ていたので使ってみました。

使ってみる

↓こんな感じの.travis.ymlを置けばいいらしいです(sudo: falseは新規のプロジェクトには明示的に書かなくても大丈夫ですが、これまでsudo: requiredを使っていたレポジトリだと必要みたいです)。

language: r
sudo: false
cache: packages

すると...

f:id:yutannihilation:20160327065659p:plain

なんかエラーになります。

ログを詳しく見ると下のようなエラーが出ています。incomplete blockってファイルがぶっ壊れてる...?

...
Error in untar2(tarfile, files, list, exdir, restore_times) : 
  incomplete block on file
ERROR: dependency ‘Rcpp’ is not available for package ‘dplyr’
* removing ‘/home/travis/R/Library/dplyr’
ERROR: dependency ‘Rcpp’ is not available for package ‘readr’
...

(https://travis-ci.org/yutannihilation/estatapi/builds/118728757#L1142)

別のCRANミラーにしてみる

よく分かりませんが、ファイルがおかしいってことはミラー変えてみるかな?と思って↓のようにRStudioのミラーを使うようにしたら成功しました。

cran: https://cran.rstudio.com/

ひょっとするとキャッシュを吹っ飛ばすだけでもよかったのかもしれません。

ビルドマトリクス

上のRStudioのブログ記事だと詳しくは書いてなかったんですが、ビルドマトリクスが組めます。

公式ドキュメント(https://docs.travis-ci.com/user/languages/r)を読みつつ以下の行を加えてみます。

r:
  - release
  - devel

できました。お手軽ですね。

f:id:yutannihilation:20160327070545p:plain

devtools::use_travis()のデフォルト設定に注意

devtools::use_travis()でつくられる.travis.ymlのテンプレートは、Hadleyのこだわりでlanguage: R(大文字のR)になります。これだとマトリクスビルドがうまく動かない、という報告がIssueについています。

試してみたところ、実際動きませんでした(マトリクスビルドではなく、ひとつのバージョンだけのビルドになる)。ひっかかりそうなので気を付けましょう。