Upgrade to 0.99.14 #121
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: rworkflows_static | |
'on': | |
push: | |
branches: | |
- master | |
- main | |
- devel | |
- RELEASE_** | |
pull_request: | |
branches: | |
- master | |
- main | |
- devel | |
- RELEASE_** | |
env: | |
run_bioccheck: ${{ false }} | |
run_rcmdcheck: ${{ true }} | |
as_cran: ${{ true }} | |
run_vignettes: ${{ true }} | |
has_testthat: ${{ true }} | |
run_covr: ${{ true }} | |
run_pkgdown: ${{ false }} | |
has_runit: ${{ false }} | |
has_latex: ${{ false }} | |
tinytex_installer: TinyTeX-1 | |
tinytex_version: '' | |
pandoc_version: '2.19' | |
run_docker: ${{ false }} | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
DOCKER_TOKEN: ${{ secrets.DOCKER_TOKEN }} | |
cache_version: cache-v1 | |
enable_act: ${{ false }} | |
jobs: | |
rworkflows_static: | |
permissions: write-all | |
runs-on: ${{ matrix.config.os }} | |
name: ${{ matrix.config.os }} (${{ matrix.config.r }}) | |
container: ${{ matrix.config.cont }} | |
strategy: | |
fail-fast: ${{ false }} | |
matrix: | |
config: | |
- os: ubuntu-latest | |
bioc: devel | |
r: auto | |
cont: bioconductor/bioconductor_docker:devel | |
rspm: https://packagemanager.rstudio.com/cran/__linux__/latest/release | |
- os: macOS-latest | |
bioc: release | |
r: auto | |
cont: ~ | |
rspm: ~ | |
- os: windows-latest | |
bioc: release | |
r: auto | |
cont: ~ | |
rspm: ~ | |
env: | |
R_REMOTES_NO_ERRORS_FROM_WARNINGS: ${{ true }} | |
RSPM: ${{ matrix.config.rspm }} | |
TZ: UTC | |
GITHUB_REPO: ${{ github.repository }} | |
RGL_USE_NULL: ${{ true }} | |
steps: | |
- name: "Set GitHub environment variables \U0001F3DEοΈ" | |
run: | | |
echo "GITHUB_TOKEN=${{ env.GITHUB_TOKEN }}" >> $GITHUB_ENV | |
echo "RGL_USE_NULL=TRUE" >> $GITHUB_ENV | |
echo "R_REMOTES_NO_ERRORS_FROM_WARNINGS=${{ true }}" >> $GITHUB_ENV | |
echo "RSPM=${{ matrix.config.rspm }}" >> $GITHUB_ENV | |
echo "TZ=UTC" >> $GITHUB_ENV | |
echo "NOT_CRAN=${{ !env.as_cran }}" >> $GITHUB_ENV | |
shell: bash {0} | |
- name: "Set R library home on Linux \U0001F4DA" | |
if: runner.os == 'Linux' | |
run: | | |
mkdir -p /__w/_temp/Library | |
echo ".libPaths('/__w/_temp/Library')" > ~/.Rprofile | |
git config --global --add safe.directory '*' | |
shell: bash {0} | |
- name: Checkout repository β¬ | |
uses: actions/checkout@v4 | |
- name: "Setup R and Bioconductor \U0001F6E0" | |
if: runner.os != 'Linux' | |
uses: grimbough/bioc-actions/setup-bioc@v1 | |
with: | |
bioc-version: ${{ matrix.config.bioc }} | |
- name: "Install Pandoc \U0001F6E0" | |
if: env.pandoc_version != 'false' && runner.os != 'Linux' | |
uses: r-lib/actions/setup-pandoc@v2 | |
with: | |
pandoc-version: ${{ env.pandoc_version }} | |
- name: Query dependencies β | |
run: | | |
options(crayon.enabled = TRUE) | |
install.packages('remotes') | |
remotes::install_github("r-lib/remotes") | |
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) | |
shell: Rscript {0} | |
- name: "Restore R package cache \U0001F3E6" | |
if: | | |
!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux' | |
uses: actions/cache@v3 | |
with: | |
path: ${{ env.R_LIBS_USER }} | |
key: ${{ env.cache_version }}-${{ runner.os }}-biocversion-${{ matrix.config.bioc | |
}}-r-${{ matrix.config.r }}-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: ${{ env.cache_version }}-${{ runner.os }}-biocversion-${{ matrix.config.bioc | |
}}-r-${{ matrix.config.r }}- | |
- name: "Cache R packages on Linux \U0001F3E6" | |
if: | | |
!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' | |
uses: actions/cache@v3 | |
with: | |
path: /home/runner/work/_temp/Library | |
key: ${{ env.cache_version }}-${{ runner.os }}-biocversion-${{ matrix.config.bioc | |
}}-r-${{ matrix.config.r }}-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: ${{ env.cache_version }}-${{ runner.os }}-biocversion-${{ matrix.config.bioc | |
}}-r-${{ matrix.config.r }}- | |
- name: "Install Linux system dependencies \U0001F6E0" | |
if: runner.os == 'Linux' | |
run: | | |
sysreqs=$(Rscript -e 'cat("apt-get update -y && apt-get install -y", paste(gsub("apt-get install -y ", "", remotes::system_requirements("ubuntu", "20.04")), collapse = " "))') | |
echo $sysreqs | |
sudo -s eval "$sysreqs" | |
sudo apt-get install -y qpdf rsync | |
shell: bash {0} | |
- name: "Install macOS system dependencies \U0001F6E0" | |
if: runner.os == 'macOS' | |
run: | | |
#### --- Justifications for each package --- #### | |
### libxml2 ### | |
# Enable installing XML from source if needed | |
### imagemagick@6 ### | |
# Required to install magick as noted at | |
# https://github.com/r-lib/usethis/commit/f1f1e0d10c1ebc75fd4c18fa7e2de4551fd9978f#diff-9bfee71065492f63457918efcd912cf2 | |
### harfbuzz fribidi ### | |
# For textshaping, required by ragg, and required by pkgdown | |
### libgit2 ### | |
# For installing usethis's dependency gert | |
### xquartz --cask ### | |
# Required for tcltk | |
### libxfont ### | |
# Required for some ggplot2 functions | |
### texlive ### | |
# Required for rendering Sweave files (even with r-lib/actions/setup-tinytex) | |
#### --- Install packages --- #### | |
### Install normally ### | |
brew install libxml2 imagemagick@6 harfbuzz fribidi libgit2 texlive | |
### Install via cask ### | |
brew install xquartz --cask | |
### Set up xml2 ### | |
echo "XML_CONFIG=/usr/local/opt/libxml2/bin/xml2-config" >> $GITHUB_ENV | |
shell: bash {0} | |
- name: "Install Windows system dependencies \U0001F6E0" | |
if: env.has_latex == 'true' && runner.os == 'Windows' | |
run: | | |
#### npm #### | |
npm install curl | |
shell: pwsh {0} | |
- name: "Install latex \U0001F6E0" | |
if: env.has_latex == 'true' | |
uses: r-lib/actions/setup-tinytex@v2 | |
env: | |
TINYTEX_INSTALLER: ${{ env.tinytex_installer }} | |
TINYTEX_VERSION: ${{ env.tinytex_version }} | |
- name: "Install latex packages \U0001F6E0" | |
if: env.has_latex == 'true' | |
env: | |
tinytex_installer: ${{ env.tinytex_installer }} | |
tinytex_version: ${{ env.tinytex_version }} | |
run: | | |
install.packages("tinytex") | |
extra_packages <- c("bera","nowidow","parnotes","marginfix","etoolbox", | |
"titlesec","sectsty","framed","enumitem","parskip","soul","placeins", | |
"footmisc","changepage","xstring","caption","mathtools","fancyhdr", | |
"preprint","ragged2e","pdfcrop","titling","silence","everysel") | |
tinytex::tlmgr_install(pkgs = extra_packages) | |
shell: Rscript {0} | |
- name: "Install dependencies pass 1 \U0001F6E0" | |
env: | |
timeout: ${{ env.timeout }} | |
run: | | |
options(crayon.enabled = TRUE, timeout=Sys.getenv("timeout")) | |
## For running the checks | |
message(paste('****', Sys.time(), 'installing rcmdcheck ****')) | |
install.packages(c("rmarkdown","BiocManager"), dependencies = TRUE) | |
message(paste('****', Sys.time(), 'pass number 1 at installing dependencies****')) | |
repos <- BiocManager::repositories() | |
remotes::install_local(repos=repos, dependencies=TRUE, build_vignettes=FALSE, upgrade=TRUE) | |
continue-on-error: ${{ true }} | |
shell: Rscript {0} | |
- name: "Install dependencies pass 2 \U0001F6E0" | |
env: | |
timeout: ${{ env.timeout }} | |
run: | | |
options(crayon.enabled = TRUE, timeout=Sys.getenv("timeout")) | |
message(paste('****', Sys.time(), 'pass number 2 at installing dependencies****')) | |
repos <- BiocManager::repositories() | |
remotes::install_local(repos=repos, dependencies=TRUE, build_vignettes=FALSE, upgrade=TRUE) | |
shell: Rscript {0} | |
- name: "Install RUnit (via BiocGenerics) \U0001F6E0" | |
if: env.has_runit == 'true' | |
run: | | |
options(crayon.enabled = TRUE) | |
BiocManager::install("BiocGenerics") | |
shell: Rscript {0} | |
- name: "Install covr \U0001F6E0" | |
if: env.run_covr == 'true' && runner.os == 'Linux' | |
run: | | |
options(crayon.enabled = TRUE) | |
install.packages("covr") | |
shell: Rscript {0} | |
- name: "Install pkgdown \U0001F6E0" | |
if: env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: | | |
options(crayon.enabled = TRUE) | |
install.packages("pkgdown") | |
shell: Rscript {0} | |
- name: Session info βΉοΈ | |
run: | | |
options(width = 100, crayon.enabled = TRUE) | |
pkgs <- installed.packages()[,"Package"] | |
if(!require("sessioninfo", quietly=TRUE)) install.packages("sessioninfo") | |
tryCatch({ | |
sessioninfo::session_info(pkgs, include_base = TRUE) | |
}, error = function(x){utils::sessionInfo()}) | |
shell: Rscript {0} | |
- name: Run CMD check β | |
if: env.run_rcmdcheck == 'true' | |
env: | |
_R_CHECK_CRAN_INCOMING_: ${{ false }} | |
RGL_USE_NULL: ${{ env.RGL_USE_NULL }} | |
DISPLAY: 99.0 | |
AS_CRAN: ${{ env.as_cran }} | |
run_vignettes: ${{ env.run_vignettes }} | |
timeout: ${{ env.timeout }} | |
run: | | |
options(crayon.enabled = TRUE, timeout=Sys.getenv("timeout")) | |
if(!require("rcmdcheck", quietly=TRUE)) install.packages("rcmdcheck") | |
as_cran <- if(Sys.getenv("AS_CRAN")=='true') "--as-cran" else NULL | |
run_build_vignettes <- if(Sys.getenv("run_vignettes")=='true') NULL else "--no-build-vignettes" | |
run_vignettes <- if(Sys.getenv("run_vignettes")=='true') NULL else "--ignore-vignettes" | |
rcmdcheck::rcmdcheck( | |
args = c("--no-manual", "--timings", as_cran, run_vignettes), | |
build_args = c("--no-manual", "--keep-empty-dirs", "--no-resave-data", run_build_vignettes), | |
error_on = "warning", | |
check_dir = "check") | |
shell: Rscript {0} | |
- name: "Reveal testthat details \U0001F4CB" | |
if: env.has_testthat == 'true' | |
run: | | |
find . -name testthat.Rout -exec cat '{}' ';' | |
shell: bash {0} | |
- name: "Run RUnit tests (via BiocGenerics) \U0001F4CB" | |
if: env.has_runit == 'true' | |
env: | |
timeout: ${{ env.timeout }} | |
run: | | |
options(crayon.enabled = TRUE, timeout=Sys.getenv("timeout")) | |
BiocGenerics:::testPackage() | |
shell: Rscript {0} | |
- name: Run BiocCheck β | |
if: env.run_bioccheck == 'true' | |
env: | |
DISPLAY: 99.0 | |
RGL_USE_NULL: ${{ env.RGL_USE_NULL }} | |
run_vignettes: ${{ env.run_vignettes }} | |
as_cran: ${{ env.as_cran }} | |
timeout: ${{ env.timeout }} | |
run: | | |
options(crayon.enabled = TRUE, timeout=Sys.getenv("timeout")) | |
#### Install deps #### | |
if(!require("BiocManager", quietly=TRUE)) install.packages("BiocManager") | |
if(!require("BiocCheck", quietly=TRUE)) BiocManager::install("BiocCheck") | |
#### Allow for packages on CRAN #### | |
no_check_vignettes <- Sys.getenv("run_vignettes")=='true' | |
as_cran <- Sys.getenv("as_cran")=='true' | |
#### Run checks #### | |
BiocCheck::BiocCheck( | |
dir('check', 'tar.gz$', full.names = TRUE), | |
`quit-with-status` = TRUE, | |
`no-check-R-ver` = TRUE, | |
`no-check-vignettes` = no_check_vignettes, | |
`no-check-CRAN` = as_cran, | |
`no-check-bioc-help` = as_cran) | |
shell: Rscript {0} | |
- name: "Test coverage \U0001F4CB" | |
if: env.run_covr == 'true' && runner.os == 'Linux' | |
run: | | |
covr::codecov() | |
shell: Rscript {0} | |
- name: "Install package \U0001F6E0οΈ" | |
if: env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: R CMD INSTALL . | |
shell: bash {0} | |
- name: Get R package info βΉοΈ | |
if: runner.os == 'Linux' | |
run: | | |
#### DockerHub repos must be lowercase (,,) #### | |
name=$(grep '^Package:' DESCRIPTION | cut -d\ -f2) | |
echo "packageName=${name,,}" >> $GITHUB_ENV | |
echo "packageNameOrig=${name}" >> $GITHUB_ENV | |
echo $name | |
version=$(grep Version DESCRIPTION | grep -o "[0-9.]\+") | |
echo "packageVersion=${version}" >> $GITHUB_ENV | |
echo $version | |
shell: bash {0} | |
- name: "Render README \U0001F4E6" | |
if: env.run_pkgdown == 'true' && runner.os == 'Linux' | |
env: | |
DISPLAY: 99.0 | |
run: | | |
if(file.exists("README.Rmd")){ | |
options(crayon.enabled = TRUE) | |
if(!require("rmarkdown", quietly=TRUE)) install.packages("rmarkdown"); | |
rmarkdown::render("README.Rmd", output_format = rmarkdown::github_document(html_preview = FALSE)); | |
} | |
shell: Rscript {0} | |
- name: "Build pkgdown site \U0001F4E6" | |
if: env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: | | |
options(crayon.enabled = TRUE) | |
pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) | |
shell: Rscript {0} | |
- name: "Deploy pkgdown site to GitHub pages \U0001F4E6 \U0001F680" | |
if: env.run_pkgdown == 'true' && runner.os == 'Linux' | |
uses: JamesIves/github-pages-deploy-action@releases/v4 | |
with: | |
clean: ${{ false }} | |
branch: gh-pages | |
folder: docs | |
token: ${{ env.GITHUB_TOKEN }} | |
- name: Upload check results β« | |
if: failure() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ runner.os }}-biocversion-${{ matrix.config.bioc }}-r-${{ matrix.config.r | |
}}-results | |
path: check | |
- name: "Create Docker file \U0001F433" | |
if: | | |
(!contains(github.event.head_commit.message, '/nodocker')) && env.run_docker == 'true' && runner.os == 'Linux' | |
run: | | |
options(crayon.enabled = TRUE) | |
if(!require("rworkflows", quietly=TRUE)) remotes::install_github("neurogenomics/rworkflows") | |
path <- rworkflows::use_dockerfile() | |
shell: Rscript {0} | |
- name: "Build and push to DockerHub \U0001F433 \U0001F680" | |
if: | | |
(!contains(github.event.head_commit.message, '/nodocker')) && env.run_docker == 'true' && runner.os == 'Linux' | |
uses: docker/build-push-action@v1 | |
with: | |
username: ${{ env.docker_user }} | |
password: ${{ env.DOCKER_TOKEN }} | |
repository: ${{ env.docker_org }}/${{ env.packageName }} | |
tag_with_ref: ${{ true }} | |
tag_with_sha: ${{ false }} | |
tags: ${{ env.packageVersion }},latest | |
build_args: PKG=${{ env.packageNameOrig }} |