GitLab CI 带有 r testthat 包
GitLab CI with r testthat package
任何人都可以 运行 测试使用 GitLab.com 持续集成工具测试最小 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
运行 测试,因为 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 脚本,这将很有用。
对我来说,这没有按预期工作。我发现问题是我有小插曲。使用我的 .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
字段。很方便,虽然我现在无法测试它的内容。
一段时间后,我发现如果您将令牌作为输入(来自 https://codecov.io/gl/yourname/yourproject/settings)并预先安装 git
,covr::codecov()
会非常有效。
希望这对其他人也有帮助。 GitLab 是 GitHub.
2018 年和 some things have changed.
的绝佳替代品
任何人都可以 运行 测试使用 GitLab.com 持续集成工具测试最小 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
运行 测试,因为 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 脚本,这将很有用。
对我来说,这没有按预期工作。我发现问题是我有小插曲。使用我的 .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
字段。很方便,虽然我现在无法测试它的内容。
一段时间后,我发现如果您将令牌作为输入(来自 https://codecov.io/gl/yourname/yourproject/settings)并预先安装 git
,covr::codecov()
会非常有效。
希望这对其他人也有帮助。 GitLab 是 GitHub.
2018 年和 some things have changed.