All features 202403 #23
Workflow file for this run
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
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples | |
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help | |
on: | |
push: | |
branches: [main, master] | |
pull_request: | |
branches: [main, master] | |
name: lint | |
jobs: | |
lint: | |
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, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:RELEASE_3_18" } | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
## Set the R library to the directory matching the | |
## R packages cache step further below when running on Docker (Linux). | |
- name: Set R Library home on Linux | |
if: runner.os == 'Linux' | |
run: | | |
mkdir /__w/_temp/Library | |
echo ".libPaths('/__w/_temp/Library')" > ~/.Rprofile | |
- name: Checkout Repository | |
uses: actions/checkout@v3 | |
# R is already included in the Bioconductor Docker image | |
- name: "[Stage] Dependencies" | |
run: | | |
sudo apt install libopenmpi-dev | |
- name: Query R dependencies | |
run: | | |
install.packages('remotes') | |
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) | |
shell: Rscript {0} | |
- name: Cache R packages on Linux | |
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-RELEASE_3_16-r-4.2-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2- | |
- name: Install Linux system dependencies | |
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" | |
- name: Install BiocManager | |
run: | | |
message(paste('****', Sys.time(), 'installing BiocManager ****')) | |
remotes::install_cran("BiocManager") | |
shell: Rscript {0} | |
- name: Set BiocVersion | |
run: | | |
BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE, force = TRUE) | |
shell: Rscript {0} | |
- name: Install dependencies pass 1 | |
run: | | |
## Try installing the package dependencies in steps. First the local | |
## dependencies, then any remaining dependencies to avoid the | |
## issues described at | |
## https://stat.ethz.ch/pipermail/bioc-devel/2020-April/016675.html | |
## https://github.com/r-lib/remotes/issues/296 | |
## Ideally, all dependencies should get installed in the first pass. | |
## Set the repos source depending on the OS | |
## Alternatively use https://storage.googleapis.com/bioconductor_docker/packages/ | |
## though based on https://bit.ly/bioc2021-package-binaries | |
## the Azure link will be the main one going forward. | |
gha_repos <- if( | |
.Platform$OS.type == "unix" && Sys.info()["sysname"] != "Darwin" | |
) c( | |
"AnVIL" = "https://bioconductordocker.blob.core.windows.net/packages/3.16/bioc", | |
BiocManager::repositories() | |
) else BiocManager::repositories() | |
## For running the checks | |
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****')) | |
install.packages(c("rcmdcheck", "BiocCheck"), repos = gha_repos) | |
## Pass #1 at installing dependencies | |
## This pass uses AnVIL-powered fast binaries | |
## details at https://github.com/nturaga/bioc2021-bioconductor-binaries | |
## The speed gains only apply to the docker builds. | |
message(paste('****', Sys.time(), 'pass number 1 at installing dependencies: local dependencies ****')) | |
remotes::install_local(dependencies = TRUE, repos = gha_repos, build_vignettes = FALSE, upgrade = TRUE) | |
continue-on-error: true | |
shell: Rscript {0} | |
- name: Install dependencies pass 2 | |
run: | | |
## Pass #2 at installing dependencies | |
## This pass does not use AnVIL and will thus update any packages | |
## that have seen been updated in Bioconductor | |
message(paste('****', Sys.time(), 'pass number 2 at installing dependencies: any remaining dependencies ****')) | |
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE, force = TRUE) | |
shell: Rscript {0} | |
- name: Install lintr | |
run: remotes::install_cran("lintr") | |
shell: Rscript {0} | |
- name: Lint | |
run: lintr::lint_package() | |
shell: Rscript {0} |