From cecc5af2ce9417c28a668d0dbb35f7283f231596 Mon Sep 17 00:00:00 2001 From: Milan Malfait Date: Mon, 10 Oct 2022 13:04:57 +0200 Subject: [PATCH] Update GitHub Actions (#41) * Simplify GHA Use actions from https://github.com/grimbough/bioc-actions * Add code coverage testing * Bug fix in `build-check` job * Let BiocCheck error on Warnings * Fix XML installation in `test-coverage` Using suggestion from https://github.com/r-lib/actions/issues/559#issuecomment-1260194363 * Disable version number checking --- .Rbuildignore | 1 + .github/workflows/check-bioc.yml | 286 ++++----------------------- .github/workflows/test-coverage.yaml | 32 +++ DESCRIPTION | 3 +- README.md | 7 +- codecov.yml | 14 ++ 6 files changed, 94 insertions(+), 249 deletions(-) create mode 100644 .github/workflows/test-coverage.yaml create mode 100644 codecov.yml diff --git a/.Rbuildignore b/.Rbuildignore index a8a8999..1a79d73 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -2,3 +2,4 @@ ^.*\.Rproj$ ^\.Rproj\.user$ ^dev$ +^codecov\.yml$ diff --git a/.github/workflows/check-bioc.yml b/.github/workflows/check-bioc.yml index 51ae245..d2113e8 100644 --- a/.github/workflows/check-bioc.yml +++ b/.github/workflows/check-bioc.yml @@ -1,273 +1,65 @@ -## Read more about GitHub actions the features of this GitHub Actions workflow -## at https://lcolladotor.github.io/biocthis/articles/biocthis.html#use_bioc_github_action -## -## For more details, check the biocthis developer notes vignette at -## https://lcolladotor.github.io/biocthis/articles/biocthis_dev_notes.html -## -## You can add this workflow to other packages using: -## > biocthis::use_bioc_github_action() -## -## Using GitHub Actions exposes you to many details about how R packages are -## compiled and installed in several operating system.s -### If you need help, please follow the steps listed at -## https://github.com/r-lib/actions#where-to-find-help -## -## If you found an issue specific to biocthis's GHA workflow, please report it -## with the information that will make it easier for others to help you. -## Thank you! - -## Acronyms: -## * GHA: GitHub Action -## * OS: operating system +## Following the example workflow at +## https://github.com/grimbough/biocActionsExamples/blob/2205c9ff10ae2ebf04b5477028bc50397c6b61b4/.github/workflows/example-workflow.yml on: push: pull_request: + workflow_dispatch: name: R-CMD-check-bioc -## These environment variables control whether to run GHA code later on that is -## specific to testthat, covr, 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_covr: 'false' - run_pkgdown: 'false' - has_RUnit: 'false' - cache-version: 'cache-v1' - jobs: build-check: - runs-on: ${{ matrix.config.os }} - name: ${{ matrix.config.os }} (R-${{ matrix.config.r }}/Bioc-${{ matrix.config.bioc }}) - container: ${{ matrix.config.cont }} - ## Environment variables unique to this job. - + name: Bioc ${{ matrix.bioc-version }} (${{ matrix.os }}) strategy: fail-fast: false matrix: - config: - - { os: ubuntu-latest, r: 'devel', bioc: 'devel', cont: "bioconductor/bioconductor_docker:devel", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" } - - { os: macOS-latest, r: 'devel', bioc: 'devel'} - - { os: windows-latest, r: 'devel', bioc: 'devel'} - 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 }} + os: [ubuntu-latest, windows-latest, macos-latest] + ## Test using both Bioconductor devel and release + bioc-version: [devel, release] - steps: + runs-on: ${{ matrix.os }} - ## 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 + steps: - ## Most of these steps are the same as the ones in - ## https://github.com/r-lib/actions/blob/master/examples/check-standard.yaml - ## If they update their steps, we will also need to update ours. - - name: Checkout Repository + - name: Checkout repository uses: actions/checkout@v2 - ## 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@master + - name: Setup R and Bioconductor + uses: grimbough/bioc-actions/setup-bioc@v1 with: - r-version: ${{ matrix.config.r }} - - ## pandoc is already included in the Bioconductor docker images - - name: Setup pandoc from r-lib - if: runner.os != 'Linux' - uses: r-lib/actions/setup-pandoc@master + bioc-version: ${{ matrix.bioc-version }} + bioc-mirror: https://ftp.gwdg.de/pub/misc/bioconductor + use-public-rspm: false - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - shell: Rscript {0} + - name: Install pandoc + uses: r-lib/actions/setup-pandoc@v2 - - name: Cache R packages - if: "!contains(github.event.head_commit.message, '/nocache') && runner.os != 'Linux'" - uses: actions/cache@v2 + - name: Install dependencies + uses: r-lib/actions/setup-r-dependencies@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ env.cache-version }}-${{ runner.os }}-biocbranch-${{ matrix.config.bioc }}-r-${{ matrix.config.r }}-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocbranch-${{ matrix.config.bioc }}-r-${{ matrix.config.r }}- + cache-version: 1 - - name: Cache R packages on Linux - if: "!contains(github.event.head_commit.message, '/nocache') && runner.os == 'Linux' " - uses: actions/cache@v2 + - name: Build, Install, Check + id: build-install-check + uses: grimbough/bioc-actions/build-install-check@v1 with: - path: /home/runner/work/_temp/Library - key: ${{ env.cache-version }}-${{ runner.os }}-biocbranch-${{ matrix.config.bioc }}-r-${{ matrix.config.r }}-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocbranch-${{ matrix.config.bioc }}-r-${{ matrix.config.r }}- - - - 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 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 - - - 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. + package-directory: '.' - ## Manually install preprocessCore with threading disabled to avoid - ## errors related to https://github.com/bmbolstad/preprocessCore/issues/7 - BiocManager::install("preprocessCore", configure.args = "--disable-threading") - - ## 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 = FALSE, upgrade = TRUE) - - ## For running the checks - message(paste('****', Sys.time(), 'installing rcmdcheck and BiocCheck ****')) - remotes::install_cran("rcmdcheck") - BiocManager::install("BiocCheck") - shell: Rscript {0} - - - name: Install BiocGenerics - if: env.has_RUnit == 'true' - run: | - ## Install BiocGenerics - BiocManager::install("BiocGenerics") - shell: Rscript {0} - - - name: Install covr - if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux' - run: | - remotes::install_cran("covr") - shell: Rscript {0} - - - name: Install pkgdown - if: github.ref == 'refs/heads/master' && 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 - run: | - rcmdcheck::rcmdcheck( - args = c("--no-build-vignettes", "--no-manual", "--timings"), - build_args = c("--no-manual", "--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 RUnit tests - if: env.has_RUnit == 'true' - run: | - BiocGenerics:::testPackage() - shell: Rscript {0} - - - name: Run BiocCheck - 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: Test coverage - if: github.ref == 'refs/heads/master' && env.run_covr == 'true' && runner.os == 'Linux' - run: | - covr::codecov() - shell: Rscript {0} - - - name: Install package - if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' - run: R CMD INSTALL . - - - name: Deploy package - if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' - run: | - git config --local user.email "actions@github.com" - git config --local user.name "GitHub Actions" - 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. + ## Turn off the checks that we know will fail + ## Cause the workflow to error if any new errors appear + - name: Run BiocCheck with arguments + uses: grimbough/bioc-actions/run-BiocCheck@v1 + with: + package-directory: '.' + arguments: '--no-check-bioc-help --no-check-version-num' + error-on: 'warning' - - name: Upload check results - if: failure() - uses: actions/upload-artifact@master + - name: Upload check output + uses: actions/upload-artifact@v2 with: - name: ${{ runner.os }}-biocbranch-devel-r-4.1-results - path: check + name: ${{ matrix.os }}-bioc-${{ matrix.bioc-version}} + path: | + ${{ steps.build-install-check.outputs.check-dir }} + ${{ steps.build-install-check.outputs.source-tarball }} + ${{ steps.build-install-check.outputs.package-binary }} diff --git a/.github/workflows/test-coverage.yaml b/.github/workflows/test-coverage.yaml new file mode 100644 index 0000000..240f230 --- /dev/null +++ b/.github/workflows/test-coverage.yaml @@ -0,0 +1,32 @@ +# 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] + workflow_dispatch: + +name: test-coverage + +jobs: + test-coverage: + runs-on: ubuntu-latest + env: + GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} + + steps: + - uses: actions/checkout@v2 + + - 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, cran/XML + needs: coverage + + - name: Test coverage + run: covr::codecov(quiet = FALSE) + shell: Rscript {0} diff --git a/DESCRIPTION b/DESCRIPTION index c280fe5..40d4e66 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -71,7 +71,8 @@ Suggests: msdata, MSnbase, matrixStats, - MsCoreUtils + MsCoreUtils, + covr License: Artistic-2.0 Collate: 'msqrob-framework.R' 'allGenerics.R' 'accessors.R' 'msqrob.R' 'msqrob-utils.R' 'StatModel-methods.R' diff --git a/README.md b/README.md index 8a4e008..91b8ca1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,10 @@ + + +[![R-CMD-check-bioc](https://github.com/statOmics/msqrob2/actions/workflows/check-bioc.yml/badge.svg)](https://github.com/statOmics/msqrob2/actions/workflows/check-bioc.yml) +[![Codecov test coverage](https://codecov.io/gh/statOmics/msqrob2/branch/master/graph/badge.svg)](https://app.codecov.io/gh/statOmics/msqrob2?branch=master) + + # R package: msqrob2 -# ## Implementation of the MSqRob analysis of differentially expressed proteins using the Features infrastructure diff --git a/codecov.yml b/codecov.yml new file mode 100644 index 0000000..04c5585 --- /dev/null +++ b/codecov.yml @@ -0,0 +1,14 @@ +comment: false + +coverage: + status: + project: + default: + target: auto + threshold: 1% + informational: true + patch: + default: + target: auto + threshold: 1% + informational: true