Continuous integration
The goal of inteRgrate is to provide an very opinionated set of rules
for R package development. The idea is that when many people contribute
to a package, it’s easy for standards to diverge. We think that CI can
help here. This package has the same functions for both travis and
Gitlab-CI environments. Currently, the package is used by Jumping
Rivers on GitHub and GitLab.
The rationale behind this package is
This package is still being developed, but we are now actively using it,
so hopefully we can avoid breaking changes.
As the package is currently being developed, it isn’t yet on CRAN. The
development version can be installed from GitHub
with:
install.packages("remotes")
remotes::install_github("jumpingrivers/inteRgrate")
The package is meant to be used within a continuous integration
framework, e.g. travis, GitLab runner. This package contains a number
functions that are useful for CI:
check_pkg()
- installs package dependencies, builds & installs theALLOWED_NOTES
and ALLOWED_WARNINGS
.check_lintr()
- runs lintr on the package, README.Rmd andcheck_namespace()
- check for instances of import()
in theNO_IMPORTS
check_r_filenames()
- ensures file extensions are .R
and allcheck_version()
- ensures that the package description has beencheck_gitignore()
- .gitignore contains standard files.check_readme()
- checks README.Rmd timestampscheck_tidy_description()
- ensure that the DESCRIPTION file isusethis::use_tidy_description()
check_file_permissions()
, check_line_breaks()
- ensures thatcreate_tag()
- autotag via the CI.See the help pages for customisation.
There’s also a pre-commit hook to help. RuninteRgrate::add_pre_commit()
in root git directory of your repo and
checks will be run before committing.
Within a CI file, it’s often better to use check_via_env()
that will
automatically call all checks. Specific checks can be switch on/off via
environment variables.
language: r
cache: packages
env:
global:
- ALLOWED_WARNINGS=0
- ALLOWED_NOTES=0
- NO_IMPORTS=0
script:
- Rscript -e "inteRgrate::check_via_env(default = 'true')"
image: rocker/r-ubuntu:18.04
variables:
ALLOWED_WARNINGS: 0
ALLOWED_NOTES: 0
NO_IMPORTS: 0
before_script:
- Rscript -e "install.packages('remotes')"
- Rscript -e "remotes::install_github('jumpingrivers/inteRgrate')"
check:
script:
- Rscript -e "inteRgrate::check_via_env(default = 'true')"
You can also use it at the command line
library("inteRgrate")
check_pkg()
check_r_filenames()
ROpensci are developing a related package -
tic. The
tic package aims to specify
the CI environment purely by an R script.
If you have any suggestions or find bugs, please use the github
issue tracker
Feel free to submit pull requests
Development of this package was supported by Jumping
Rivers