Skip to content

Merge pull request #82 from ipb-halle/feature/qfeature #92

Merge pull request #82 from ipb-halle/feature/qfeature

Merge pull request #82 from ipb-halle/feature/qfeature #92

Workflow file for this run

## Acronyms:
## * GHA: GitHub Action
## * OS: operating system
on:
push:
pull_request:
# Define the GitHub Actions workflow for R CMD check of the MetFamily package
name: R-CMD-check-MetFamily
# Define environment variables for the workflow
env:
has_testthat: 'true'
# run_covr: 'true' # Disabled until later
run_covr: 'false'
# run_pkgdown: 'true' # Disabled until later
run_pkgdown: 'false'
has_RUnit: 'false'
has_BiocCheck: 'false'
cache-version: 'cache-v1'
# Define the jobs for different operating systems
jobs:
build-check:
runs-on: ${{ matrix.config.os }}
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
container: ${{ matrix.config.cont }}
# Define the matrix for different configurations
strategy:
fail-fast: false
matrix:
config:
- { os: ubuntu-latest, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:RELEASE_3_18", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" }
# - { os: ubuntu-latest, r: 'devel', bioc: 'devel', cont: "bioconductor/bioconductor_docker:devel", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" }
# Disabling additional architectures until later
# - { os: macOS-latest, r: 'next', bioc: '3.18'}
# - { os: windows-latest, r: 'next', bioc: '3.18'}
# Define environment variables for the job
env:
R_REMOTES_NO_ERRORS_FROM_WARNINGS: true
RSPM: ${{ matrix.config.rspm }}
NOT_CRAN: true
TZ: UTC
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
# Define the steps to be executed
steps:
# Step 1: Set R Library home on Linux
- name: Set R Library home on Linux
if: runner.os == 'Linux'
run: |
mkdir /__w/_temp/Library
echo ".libPaths('/__w/_temp/Library')" > ~/.Rprofile
# Step 2: Checkout the repository
- name: Checkout Repository
uses: actions/checkout@v2
# Step 3: Setup R from r-lib
- name: Setup R from r-lib
if: runner.os != 'Linux'
uses: r-lib/actions/setup-r@v2
with:
r-version: ${{ matrix.config.r }}
extra-repositories: https://janmarvin.r-universe.dev
# Step 4: Setup pandoc from r-lib
- name: Setup pandoc from r-lib
if: runner.os != 'Linux'
uses: r-lib/actions/setup-pandoc@v2
# Step 5: Query dependencies and save RDS file
- name: Query dependencies
run: |
install.packages('remotes')
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2)
shell: Rscript {0}
# Step 6: Cache R packages based on configuration
- name: Cache R packages
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'"
uses: actions/cache@v2
with:
path: ${{ env.R_LIBS_USER }}
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-devel-${{ hashFiles('.github/depends.Rds') }}
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-devel-
# Step 7: Cache R packages on Linux
- name: Cache R packages on Linux
if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' "
uses: actions/cache@v2
with:
path: /home/runner/work/_temp/Library
key: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-devel-${{ hashFiles('.github/depends.Rds') }}
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-devel-
# Step 8: Install Linux system dependencies
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
sysreqs=$(Rscript -e 'cat("apt-get update -y && ", paste(remotes::system_requirements("ubuntu", "20.04"), collapse = " && "))')
echo $sysreqs
sudo -s eval "$sysreqs"
# Step 9: Install macOS system dependencies
- name: Install macOS system dependencies
if: matrix.config.os == 'macOS-latest'
run: |
## Enable installing XML from source if needed
brew install libxml2
echo "XML_CONFIG=/usr/local/opt/libxml2/bin/xml2-config" >> $GITHUB_ENV
## Required to install magick as noted at
## https://github.com/r-lib/usethis/commit/f1f1e0d10c1ebc75fd4c18fa7e2de4551fd9978f#diff-9bfee71065492f63457918efcd912cf2
brew install imagemagick@6
## For textshaping, required by ragg, and required by pkgdown
brew install harfbuzz fribidi
## For installing usethis's dependency gert
brew install libgit2
## required for ncdf4
## brew install netcdf ## Does not work as it is compiled with gcc
## Use pre-compiled libraries from https://mac.r-project.org/libs-4/
curl -O https://mac.r-project.org/libs-4/netcdf-4.7.4-darwin.17-x86_64.tar.gz
tar fvxzm netcdf-4.7.4-darwin.17-x86_64.tar.gz -C /
rm netcdf-4.7.4-darwin.17-x86_64.tar.gz
curl -O https://mac.r-project.org/libs-4/hdf5-1.12.0-darwin.17-x86_64.tar.gz
tar fvxzm hdf5-1.12.0-darwin.17-x86_64.tar.gz -C /
rm hdf5-1.12.0-darwin.17-x86_64.tar.gz
curl -O https://mac.r-project.org/libs-4/szip-2.1.1-darwin.17-x86_64.tar.gz
tar fvxzm szip-2.1.1-darwin.17-x86_64.tar.gz -C /
rm szip-2.1.1-darwin.17-x86_64.tar.gz
# Step 10: Install Windows system dependencies
- name: Install Windows system dependencies
if: runner.os == 'Windows'
run: |
## Edit below if you have any Windows system dependencies
shell: Rscript {0}
# Step 11: Install BiocManager
- name: Install BiocManager
run: |
message(paste('****', Sys.time(), 'installing BiocManager ****'))
remotes::install_cran("BiocManager")
shell: Rscript {0}
# Step 12: Set BiocVersion
- name: Set BiocVersion
run: |
BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE)
shell: Rscript {0}
# Step 13: Install dependencies pass 1
- 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.
## Pass #1 at installing dependencies
BiocManager::install(c(
"mzR", "htmltools", "shiny", "shinyBS", "shinyjs", "shinybusy",
"DT", "colourpicker", "Matrix", "squash", "FactoMineR", "mixOmics",
"pcaMethods", "cba", "tools", "stringr", "xcms", "matrixStats",
"plotrix"
))
message(paste('****', Sys.time(), 'pass number 1 at installing dependencies: local dependencies ****'))
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = FALSE, upgrade = TRUE)
BiocManager::install(c("rmarkdown", "BiocStyle"))
continue-on-error: true
shell: Rscript {0}
# Step 14: Install dependencies pass 2
- name: Install dependencies pass 2
run: |
## Pass #2 at installing dependencies
message(paste('****', Sys.time(), 'pass number 2 at installing dependencies: any remaining dependencies ****'))
remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = FALSE, upgrade = TRUE)
## Manually install packages that seem to be skipped.
message(paste('****', Sys.time(), 'force installation of selected packages ****'))
BiocManager::install("mzR", type = "source", force = TRUE)
BiocManager::install("Spectra")
## For running the checks
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****'))
remotes::install_cran("rcmdcheck")
BiocManager::install(c("BiocCheck", "DBI"))
shell: Rscript {0}
# Step 15: Install BiocGenerics
- name: Install BiocGenerics
if: env.has_RUnit == 'true'
run: |
## Install BiocGenerics
BiocManager::install("BiocGenerics")
shell: Rscript {0}
# Step 16: Install covr
- name: Install covr
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
run: |
remotes::install_cran("covr")
shell: Rscript {0}
# Step 17: Install pkgdown
- name: Install pkgdown
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
run: |
remotes::install_github("r-lib/pkgdown")
shell: Rscript {0}
# Step 18: Session info
- name: Session info
run: |
options(width = 100)
pkgs <- installed.packages()[, "Package"]
sessioninfo::session_info(pkgs, include_base = TRUE)
shell: Rscript {0}
# Step 19: Run CMD check
- name: Run CMD check
env:
_R_CHECK_CRAN_INCOMING_: false
run: |
rcmdcheck::rcmdcheck(
args = c("--no-build-vignettes", "--no-manual", "--timings"),
build_args = c("--no-manual", "--no-resave-data"),
error_on = "error",
check_dir = "check"
)
shell: Rscript {0}
# Step 20: Reveal testthat details
- name: Reveal testthat details
if: env.has_testthat == 'true' && runner.os == 'Linux'
run: find . -name testthat.Rout -exec cat '{}' ';'
# Step 21: Run RUnit tests
- name: Run RUnit tests
if: env.has_RUnit == 'true' && runner.os == 'Linux'
run: |
BiocGenerics:::testPackage()
shell: Rscript {0}
# Step 22: Run BiocCheck
- name: Run BiocCheck
if: env.has_BiocCheck == 'true' && runner.os == 'Linux'
run: |
BiocCheck::BiocCheck(
dir('check', 'tar.gz$', full.names = TRUE),
`quit-with-status` = TRUE,
`no-check-R-ver` = TRUE,
`no-check-bioc-help` = TRUE
)
shell: Rscript {0}
# Step 23: Test coverage
- name: Test coverage
if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux'
run: |
covr::codecov()
shell: Rscript {0}
# Step 24: Install package
- name: Install package
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
run: R CMD INSTALL .
# Step 25: Test Shiny App in package
- name: Test Shiny App
uses: rstudio/shinytest2/actions/test-app@actions/v1
with:
app-dir: "inst/MetFamily"
# Step 26: Deploy package
- name: Deploy package
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux'
run: |
git config --global user.email "actions@github.com"
git config --global user.name "GitHub Actions"
git config --global --add safe.directory /__w/your-package-name
Rscript -e "pkgdown::deploy_to_branch(new_process = FALSE)"
shell: bash {0}
## Note that you need to run pkgdown::deploy_to_branch(new_process = FALSE)
## at least one locally before this will work. This creates the gh-pages
## branch (erasing anything you haven't version controlled!) and
## makes the git history recognizable by pkgdown.
# Step 27: Upload check results
- name: Upload check results
if: failure()
uses: actions/upload-artifact@master
with:
name: ${{ runner.os }}-biocversion-devel-r-devel-results
path: check