From b093d2a341838d181776e7e1807fbeb2e8cb6af6 Mon Sep 17 00:00:00 2001 From: Stefano Mangiola Date: Fri, 17 Nov 2023 15:43:59 +1100 Subject: [PATCH] fix-biocCHECK --- .github/workflows/check-bioc.yml | 158 ++++++++++--------------------- 1 file changed, 49 insertions(+), 109 deletions(-) diff --git a/.github/workflows/check-bioc.yml b/.github/workflows/check-bioc.yml index ba15358..7c7151e 100644 --- a/.github/workflows/check-bioc.yml +++ b/.github/workflows/check-bioc.yml @@ -39,7 +39,6 @@ env: run_pkgdown: 'true' has_RUnit: 'false' cache-version: 'cache-v1' - run_docker: 'false' jobs: build-check: @@ -52,11 +51,9 @@ jobs: fail-fast: false matrix: config: - - { os: ubuntu-latest, r: '4.3', bioc: '3.18', cont: "bioconductor/bioconductor_docker:devel", rspm: "https://packagemanager.rstudio.com/cran/__linux__/jammy/latest" } - - { os: macOS-latest, r: '4.3', bioc: '3.18'} - - { os: windows-latest, r: '4.3', bioc: '3.18'} - ## Check https://github.com/r-lib/actions/tree/master/examples - ## for examples using the http-user-agent + - { os: ubuntu-latest, r: '4.2', bioc: '3.16', cont: "bioconductor/bioconductor_docker:RELEASE_3_16", rspm: "https://packagemanager.rstudio.com/cran/__linux__/focal/latest" } + - { os: macOS-latest, r: '4.2', bioc: '3.16'} + - { os: windows-latest, r: '4.2', bioc: '3.16'} env: R_REMOTES_NO_ERRORS_FROM_WARNINGS: true RSPM: ${{ matrix.config.rspm }} @@ -79,7 +76,7 @@ jobs: ## 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 - uses: actions/checkout@v3 + uses: actions/checkout@v2 ## R is already included in the Bioconductor docker images - name: Setup R from r-lib @@ -87,7 +84,6 @@ jobs: uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - http-user-agent: ${{ matrix.config.http-user-agent }} ## pandoc is already included in the Bioconductor docker images - name: Setup pandoc from r-lib @@ -100,28 +96,28 @@ jobs: saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) shell: Rscript {0} - - name: Restore R package cache + - name: Cache R packages 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-devel-r-4.3-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3- + 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: 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-devel-r-4.3-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ env.cache-version }}-${{ runner.os }}-biocversion-devel-r-4.3- + 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 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' @@ -139,9 +135,10 @@ jobs: ## For installing usethis's dependency gert brew install libgit2 - - ## Required for tcltk - brew install xquartz --cask + + ## To fix x11/cairo error with tidyHeatmap/Complexheatmap here https://github.com/stemangiola/tidybulk/runs/1388237421?check_suite_focus=true#step:14:2134 + ## Suggested here https://stackoverflow.com/questions/63648591/how-to-install-x11-before-testing-with-github-actions-for-macos + brew install --cask xquartz - name: Install Windows system dependencies if: runner.os == 'Windows' @@ -157,7 +154,7 @@ jobs: - name: Set BiocVersion run: | - BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE, force = TRUE) + BiocManager::install(version = "${{ matrix.config.bioc }}", ask = FALSE) shell: Rscript {0} - name: Install dependencies pass 1 @@ -169,13 +166,9 @@ jobs: ## 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) + remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, upgrade = TRUE) continue-on-error: true shell: Rscript {0} @@ -183,7 +176,12 @@ jobs: 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) + remotes::install_local(dependencies = TRUE, repos = BiocManager::repositories(), build_vignettes = TRUE, 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 @@ -194,15 +192,15 @@ jobs: shell: Rscript {0} - name: Install covr - if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux' + 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/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' + if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' run: | - remotes::install_github("r-lib/pkgdown") + remotes::install_cran("pkgdown") shell: Rscript {0} - name: Session info @@ -215,12 +213,10 @@ jobs: - 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"), + args = c("--no-build-vignettes", "--no-manual", "--timings"), + build_args = c("--no-manual", "--no-resave-data"), error_on = "warning", check_dir = "check" ) @@ -238,101 +234,45 @@ jobs: shell: Rscript {0} - name: Run BiocCheck - 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 + `no-check-bioc-help` = TRUE, + `no-check-library-calls` = TRUE, + `no-check-coding-practices` = TRUE ) shell: Rscript {0} - name: Test coverage - if: github.ref == 'refs/heads/devel' && env.run_covr == 'true' && runner.os == 'Linux' + 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/devel' && env.run_pkgdown == 'true' && runner.os == 'Linux' + if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' run: R CMD INSTALL . - - 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: Deploy package + if: github.ref == 'refs/heads/master' && env.run_pkgdown == 'true' && runner.os == 'Linux' + run: | + ## Temporary workaround for https://github.com/actions/checkout/issues/766 + git config --global --add safe.directory "$GITHUB_WORKSPACE" + + 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. - - 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 + uses: actions/upload-artifact@v3 with: - name: ${{ runner.os }}-biocversion-devel-r-4.3-results + name: ${{ runner.os }}-biocversion-RELEASE_3_16-r-4.2-results path: check - - - ## 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-check - 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 - 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 - - - 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 }} - ## Note that DOCKERHUB_TOKEN is really a token for your dockerhub - ## account, not your actual dockerhub account password. You can get it - ## from https://hub.docker.com/settings/security. - ## Check https://github.com/docker/build-push-action/tree/v4.0.0 - ## for more details. - ## Alternatively, try checking - ## https://seandavi.github.io/BuildABiocWorkshop/articles/HOWTO_BUILD_WORKSHOP.html. - - - 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: . - push: true - tags: > - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:latest, - ${{ secrets.DOCKERHUB_USERNAME }}/${{ env.CONT_IMG_NAME }}:devel