【问题标题】:GitLab CI with r testthat package带有 r testthat 包的 GitLab CI
【发布时间】:2019-01-22 19:35:30
【问题描述】:

任何人都可以使用 GitLab.com 持续集成工具运行 testthat 测试最小 R 包吗? 我的尝试:
https://gitlab.com/djchapman/CI_example
这是我正在使用的 .gitlab-CI.yml 文本,

image: rocker/rstudio
test:
   script:
    - R -e 'install.packages(c("devtools", "testthat"))'
    - R CMD build . --no-build-vignettes --no-manual
    - PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
    - R CMD check "${PKG_FILE_NAME}" --no-build-vignettes --no-manual
    - R -e 'devtools::test()'

改编自this网站。我意识到 devtools 具有在安装软件包时可能需要包含的依赖项,我尝试过,但是 git2r 的库似乎没有正确安装,现在我想知道我是否做错了。谢谢。

【问题讨论】:

  • 您有任何错误吗?你为什么打电话给devtools::test()?检查包包括运行测试。

标签: r gitlab testthat


【解决方案1】:

您不需要通过devtools 运行测试,因为R CMD check 已经这样做了。以下应该有效:

image: rocker/rstudio
test:
   script:
    - R -e 'install.packages(c("testthat"))'
    - R CMD build . --no-build-vignettes --no-manual
    - PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
    - R CMD check "${PKG_FILE_NAME}" --no-build-vignettes --no-manual

或者,您可以使用允许二进制安装的图像:

image: rocker/r-base
test:
   script:
    - apt-get update
    - apt-get install --yes --no-install-recommends r-cran-testthat r-cran-devtools
    - R -e "devtools::install_deps()"
    - R CMD build . --no-build-vignettes --no-manual
    - PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
    - R CMD check "${PKG_FILE_NAME}" --no-build-vignettes --no-manual

如果您有尚未为 Debian 打包的依赖项,或者如果您不想在添加新依赖项时更新 CI 脚本,这将非常有用。

【讨论】:

  • 谢谢拉尔夫!我测试了两种解决方案,它们都通过了。对R CMD检查不是很了解,对yaml没有经验。
  • 请注意,如果您有任何依赖于您的说明文件的建议部分中的包的测试,则它应为"devtools::install_deps(dependencies = TRUE)"。默认行为是忽略建议的包。
【解决方案2】:

对我来说,这并没有按预期工作。我发现问题是我有小插曲。使用我的.gitlab-ci.yml 的以下内容,我解决了这个问题:

image: rocker/r-base
gitlab:
   script:
    - apt-get update
    # install dependencies for package
    - apt-get install --yes --no-install-recommends r-cran-xml2 r-cran-testthat r-cran-devtools
    - R -e 'devtools::install_deps(dependencies = c("Depends", "Imports", "Suggests"))'
    # remove vignettes folder and get VignetteBuilder field out of DESCRIPTION file
    - rm -rf vignettes
    - R -e 'd <- read.dcf("DESCRIPTION"); d[, colnames(d) == "VignetteBuilder"] <- NA; write.dcf(d, "DESCRIPTION")'
    - R CMD build . --no-build-vignettes --no-manual
    - PKG_FILE_NAME=$(ls -1t *.tar.gz | head -n 1)
    - R CMD check "${PKG_FILE_NAME}" --no-build-vignettes --no-manual --as-cran
    # update code coverage
    - apt-get install --yes git
    - R -e "covr::codecov(token = 'mytoken')"

它会在开始构建之前删除 vignettes 文件夹并从 DESCRIPTION 文件中删除 VignetteBuilder 字段。很方便,虽然我现在无法测试它的内容。

过了一会儿,我发现covr::codecov() 工作得非常好,如果您将令牌作为输入(来自https://codecov.io/gl/yourname/yourproject/settings)并预先安装git

希望这对其他人也有帮助。 GitLab 是 GitHub 的绝佳替代品。
现在是 2018 年,some things have changed

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-01
    • 2017-05-27
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-12
    • 2017-10-06
    • 1970-01-01
    相关资源
    最近更新 更多