Fix checking of assignments for empty modularexperiment #82
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 partially based on | |
# - The output of: biocthis::use_bioc_github_action() | |
# - The workflow: https://github.com/r-lib/actions/tree/v2/examples | |
on: push | |
name: build-test-deploy | |
# These environment variables control whether to run GitHub Actions (GHA) code | |
# later on that is specific to testthat, and pkgdown. | |
# | |
# If you need to clear the cache of packages, update the number inside | |
# cache-version as discussed at https://github.com/r-lib/actions/issues/86. | |
# Note that you can always run a GHA test without the cache by using the word | |
# "/nocache" in the commit message. | |
env: | |
has_testthat: 'true' | |
run_bioc: 'true' | |
run_pkgdown: 'true' | |
run_docker: 'true' | |
cache-version: 'cache-v2' | |
jobs: | |
build-test: | |
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.4', bioc: '3.20', cont: "bioconductor/bioconductor_docker:RELEASE_3_20", rspm: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest" } | |
- { os: macOS-latest, r: '4.4', bioc: '3.20'} | |
- { os: windows-latest, r: '4.4', bioc: '3.20'} | |
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 }} | |
steps: | |
- 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 images | |
- name: Setup R from r-lib | |
if: runner.os != 'Linux' | |
uses: r-lib/actions/setup-r@v2 | |
with: | |
r-version: ${{ matrix.config.r }} | |
http-user-agent: ${{ matrix.config.http-user-agent }} | |
# Install pandoc for non-Linux platforms | |
- name: Setup Pandoc | |
if: runner.os != 'Linux' | |
uses: r-lib/actions/setup-pandoc@v2 | |
- name: Query dependencies | |
run: | | |
install.packages('remotes') | |
saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) | |
shell: Rscript {0} | |
- name: Restore R package cache | |
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 }}-bioc-${{ env.BIOC_VERSION }}-r-${{ env.R_VERSION }}-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-bioc-${{ env.BIOC_VERSION }}-r-${{ env.R_VERSION }}- | |
- 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 }}-bioc-${{ env.BIOC_VERSION }}-r-${{ env.R_VERSION }}-${{ hashFiles('.github/depends.Rds') }} | |
restore-keys: ${{ env.cache-version }}-${{ runner.os }}-bioc-${{ env.BIOC_VERSION }}-r-${{ env.R_VERSION }}- | |
- 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 tcltk | |
brew install xquartz --cask | |
- name: Install Windows system dependencies | |
if: runner.os == 'Windows' | |
run: | | |
# Edit below if you have any Windows system dependencies | |
shell: Rscript {0} | |
- 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. | |
# For running the checks | |
message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****')) | |
install.packages(c("rcmdcheck", "BiocCheck"), repos = BiocManager::repositories()) | |
# Pass #1 at installing dependencies | |
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) | |
continue-on-error: true | |
shell: Rscript {0} | |
- 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 = TRUE, upgrade = TRUE, force = TRUE) | |
shell: Rscript {0} | |
- name: Install BiocGenerics | |
if: env.has_RUnit == 'true' | |
run: | | |
# Install BiocGenerics | |
BiocManager::install("BiocGenerics") | |
shell: Rscript {0} | |
- name: Install pkgdown | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: | | |
remotes::install_cran("pkgdown") | |
shell: Rscript {0} | |
- name: Session info | |
run: | | |
options(width = 100) | |
pkgs <- installed.packages()[, "Package"] | |
sessioninfo::session_info(pkgs, include_base = TRUE) | |
shell: Rscript {0} | |
- name: Run CMD check | |
env: | |
_R_CHECK_CRAN_INCOMING_: false | |
DISPLAY: 99.0 | |
run: | | |
options(crayon.enabled = TRUE) | |
rcmdcheck::rcmdcheck( | |
args = c("--no-manual", "--no-vignettes", "--timings"), | |
build_args = c("--no-manual", "--keep-empty-dirs", "--no-resave-data"), | |
error_on = "warning", | |
check_dir = "check" | |
) | |
shell: Rscript {0} | |
# Might need an to add this to the if: && runner.os == 'Linux' | |
- name: Reveal testthat details | |
if: env.has_testthat == 'true' | |
run: find . -name testthat.Rout -exec cat '{}' ';' | |
- name: Run BiocCheck | |
if: env.run_bioc == 'true' | |
env: | |
DISPLAY: 99.0 | |
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} | |
- name: Install package | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: R CMD INSTALL . | |
- name: Prepare pkgdown figures | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: | | |
mkdir vignettes/figures | |
cp inst/stability.png vignettes/figures/stability.png | |
shell: bash | |
- name: Build pkgdown site | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: pkgdown::build_site_github_pages(new_process = FALSE, install = FALSE) | |
shell: Rscript {0} | |
- name: Install deploy dependencies | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
run: | | |
apt-get update && apt-get -y install rsync | |
- name: Deploy pkgdown site to GitHub pages | |
if: github.ref == 'refs/heads/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' | |
uses: JamesIves/github-pages-deploy-action@releases/v4 | |
with: | |
clean: false | |
branch: gh-pages | |
folder: docs | |
- name: Upload check results | |
if: failure() | |
uses: actions/upload-artifact@master | |
with: | |
name: ${{ runner.os }}-biocversion-RELEASE_3_20-r-4.5-results | |
path: check | |
# 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 | |
test-coverage: | |
runs-on: ubuntu-latest | |
needs: build-test | |
env: | |
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: r-lib/actions/setup-r@v2 | |
with: | |
use-public-rspm: true | |
- uses: r-lib/actions/setup-r-dependencies@v2 | |
with: | |
extra-packages: any::covr, any::xml2 | |
needs: coverage | |
- name: Test coverage | |
run: | | |
cov <- covr::package_coverage( | |
quiet = FALSE, | |
clean = FALSE, | |
install_path = file.path(normalizePath(Sys.getenv("RUNNER_TEMP"), winslash = "/"), "package") | |
) | |
covr::to_cobertura(cov) | |
shell: Rscript {0} | |
- uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: ${{ github.event_name != 'pull_request' && true || false }} | |
file: ./cobertura.xml | |
plugin: noop | |
disable_search: true | |
token: ${{ secrets.CODECOV_TOKEN }} | |
- name: Show testthat output | |
if: always() | |
run: | | |
# -------------------------------------------------------------------- | |
find '${{ runner.temp }}/package' -name 'testthat.Rout*' -exec cat '{}' \; || true | |
shell: bash | |
- name: Upload test results | |
if: failure() | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-test-failures | |
path: ${{ runner.temp }}/package | |
# Code adapted from | |
# https://github.com/waldronlab/cBioPortalData/blob/e0440a4445f0cc731e426363a76faa22ee5e0f9d/.github/workflows/devel_check_dock.yml#L65-L92 | |
docker-build-and-push: | |
runs-on: ubuntu-latest | |
needs: build-test | |
steps: | |
- name: Checkout Repository | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'" | |
uses: actions/checkout@v3 | |
- name: Register repo name and get package version | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'" | |
id: reg_repo_name | |
run: | | |
echo CONT_IMG_NAME=$(echo ${{ github.event.repository.name }} | tr '[:upper:]' '[:lower:]') >> $GITHUB_ENV | |
echo PKG_VERSION=$(grep "Version:" DESCRIPTION | cut -d' ' -f2) >> $GITHUB_ENV | |
- name: Set up QEMU | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'" | |
uses: docker/setup-qemu-action@v2 | |
- name: Set up Docker Buildx | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'" | |
uses: docker/setup-buildx-action@v2 | |
- name: Login to Docker Hub | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel'" | |
uses: docker/login-action@v2 | |
with: | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
password: ${{ secrets.DOCKERHUB_TOKEN }} | |
- name: Build and Push Docker | |
if: "!contains(github.event.head_commit.message, '/nodocker') && env.run_docker == 'true' && github.ref == 'refs/heads/devel' && success()" | |
uses: docker/build-push-action@v4 | |
with: | |
context: . | |
file: ./inst/docker/Dockerfile | |
push: true | |
tags: | | |
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:latest, | |
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:devel, | |
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:${{ env.PKG_VERSION }} |