【发布时间】:2016-09-03 23:37:13
【问题描述】:
我想使用checkpoint package 或MRAN snapshot repo 来设置我的包在 Travis-CI 上构建时使用的包版本。
我正在寻求有关使这些工作中的任何一个工作的建议:
Travis 使用我的包所依赖的包的本地文件(即存储在我的 pkg 的 github 存储库中)。例如,如果我使用检查点下载包的源并将它们与我的包一起存储在一个目录中,我如何让 Travis 从该本地位置而不是从 CRAN 安装包?或者,
Travis 使用 MRAN 快照 URL 下载在 URL 中设置的特定日期存档的包。
我一直在试验这个测试包中的 .travis.yml 文件中的各种选项:https://github.com/benmarwick/checkpointtest
例如,这里是我尝试过的 .travis.yml 文件:
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: R
sudo: false
cache: packages
warnings_are_errors: false
cran: https://mran.revolutionanalytics.com/
和
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: R
sudo: false
cache: packages
warnings_are_errors: false
repos:
CRAN: https://mran.revolutionanalytics.com/snapshot/2016-09-02
和
# R for travis: see documentation at https://docs.travis-ci.com/user/languages/r
language: R
sudo: false
cache: packages
cran: https://mran.revolutionanalytics.com/snapshot/2016-09-02
env:
global:
- R_LIBS_USER=~/vignettes/packages/.checkpoint/2016-09-02/lib/x86_64-w64-mingw32/3.3.1
- R_LIBS_SITE=~/vignettes/packages/.checkpoint/2016-09-02/lib/x86_64-w64-mingw32/3.3.1
还有其他几种组合。
到目前为止,一切都导致了错误 (https://travis-ci.org/benmarwick/checkpointtest),通常这是错误消息:
W: Failed to fetch https://mran.revolutionanalytics.com//bin/linux/ubuntu/precise/Packages server certificate verification failed.
CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile: none
如何让 Travis-CI 了解检查点包,而不是联系 CRAN 下载依赖项?
这个问题与我的packrat question 有关让 Travis 使用非 CRAN 包源的问题有关。
【问题讨论】:
-
可能不是您想听到的答案,但在我使用(并维护)的旧 Travis 的“维护版本”中,我认为我将有适当的控制级别来执行此操作(并执行相关操作)为更多预构建的 .deb 包添加 PPA 的东西)。再说一次,我也不使用 MRAN,所以我不能确定。最终,我们仍然对 Travis 不让我们自带 Docker 容器感到愤怒。似乎 Gitlab 确实...
-
好的,谢谢指点。我将看看 R 的旧 travis 配置文件
-
我怀疑您最后一次尝试使用环境变量设置 R_LIBS_* 是最有希望的。但是,我可以从您使用的路径中看出您的本地构建是 Windows (x86_64-w64-mingw32),因此您正在将 Windows 包上传到 Travis,但 Travis 运行 Linux (AFAIK)。为此,您的本地开发环境应与 Travis 环境匹配。
-
另外,我认为更有希望的途径是使用
miniCRAN而不是检查点。然后将您的 CRAN 设置为miniCRAN文件夹。使用 miniCRAN,您可以更好地控制要安装的软件包,即您可以指定类型和 R 版本。 -
谢谢,我想一定有办法让 Travis 在构建我的包时联系 MRAN 存储库以获取包(如果我不想在我的存储库中包含这些包) )。我会再看看 miniCRAN,它在其他情况下对我非常有用!