From 52dcd690e7dfdf416d8bc02ae807bc03f97d26e4 Mon Sep 17 00:00:00 2001 From: Henrik Bengtsson Date: Sat, 20 Jul 2024 21:23:41 +0200 Subject: [PATCH] GHA: modernize - take 1 --- .github/.travis.yml | 77 ------------------------- .github/workflows/R-CMD-check.yaml | 93 +++++++++++++----------------- .github/workflows/covr.yaml | 53 +++++++---------- 3 files changed, 62 insertions(+), 161 deletions(-) delete mode 100644 .github/.travis.yml diff --git a/.github/.travis.yml b/.github/.travis.yml deleted file mode 100644 index 77a8cc1..0000000 --- a/.github/.travis.yml +++ /dev/null @@ -1,77 +0,0 @@ -#---------------------------------------------------------------- -# Travis-CI configuration for R packages -# -# REFERENCES: -# * Travis CI: https://docs.travis-ci.com/user/languages/r -# * covr: https://github.com/jimhester/covr -# -# YAML validated using http://www.yamllint.com/ -#---------------------------------------------------------------- -language: r -sudo: false -cache: packages -warnings_are_errors: false -r_check_args: --as-cran -latex: true - -before_install: - - tlmgr install bera - - tlmgr install nowidow - - tlmgr install parnotes - - tlmgr install marginfix - -matrix: - include: - - os: linux - r: oldrel - - os: linux - r: release - - os: linux - r: devel - env: - - R_KEEP_PKG_SOURCE=yes - - _R_S3_METHOD_LOOKUP_BASEENV_AFTER_GLOBALENV_=true - - _R_S3_METHOD_LOOKUP_USE_TOPENV_AS_DEFENV_=true - - _R_CHECK_CONNECTIONS_LEFT_OPEN_=true - - _R_CHECK_LENGTH_1_CONDITION_=verbose - - _R_CHECK_LENGTH_1_LOGIC2_=verbose - - _R_CLASS_MATRIX_ARRAY_=true - - os: osx - r: oldrel - r_build_args: --no-build-vignettes ## WORKAROUND: sectsty.sty missing - r_check_args: --as-cran --no-build-vignettes --no-vignettes - before_install: - env: NB='w/out vignettes' ## Just a label - - os: osx - r: release - r_build_args: --no-build-vignettes ## WORKAROUND: sectsty.sty missing - r_check_args: --as-cran --no-build-vignettes --no-vignettes - before_install: - env: NB='w/out vignettes' ## Just a label - - os: linux - r: release - r_check_args: --no-build-vignettes --no-codoc --no-examples --no-tests --no-manual --ignore-vignettes - r_packages: - - covr - after_success: - - Rscript -e 'covr::codecov(quiet=FALSE)' - env: NB='w/ covr' ## Just a label - -bioc_packages: - - Biobase - - CGHbase - - CGHcall - - DNAcopy - - GenomicRanges - - IRanges - - Rsamtools - - BiocStyle - - BSgenome - - GenomeInfoDb - - QDNAseq.hg19 - - QDNAseq.mm10 - -notifications: - email: - on_success: change - on_failure: change diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index edd2f3a..eaed9c9 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -6,7 +6,7 @@ jobs: R-CMD-check: if: "! contains(github.event.head_commit.message, '[ci skip]')" - timeout-minutes: 45 + timeout-minutes: 30 runs-on: ${{ matrix.config.os }} @@ -16,34 +16,41 @@ jobs: fail-fast: false matrix: config: - - {os: windows-latest, r: release } -# - {os: macOS-latest, r: devel } # QDNAseq.hg19, QDNAseq.mm10 not available - - {os: macOS-latest, r: release } - - {os: ubuntu-20.04, r: devel } - - {os: ubuntu-20.04, r: release } - - {os: ubuntu-20.04, r: oldrel } - - {os: ubuntu-20.04, r: oldrel-1 } - - {os: ubuntu-20.04, r: oldrel-2 } - - {os: ubuntu-20.04, r: oldrel-3 } - +# - {os: windows-latest, r: 'devel' } +# - {os: windows-latest, r: 'release' } +# - {os: windows-latest, r: 'oldrel' } +# - {os: macOS-14, r: 'devel' } +# - {os: macOS-latest, r: 'release' } +# - {os: macOS-latest, r: 'oldrel' } + - {os: ubuntu-latest, r: 'devel' } + - {os: ubuntu-latest, r: 'release' } +# - {os: ubuntu-latest, r: 'oldrel' } +# - {os: ubuntu-latest, r: 'oldrel-1' } +# - {os: ubuntu-latest, r: 'oldrel-2' } +# - {os: ubuntu-latest, r: '3.5' } +# - {os: ubuntu-latest, r: 'release' , language: ko, label: ko } +# - {os: ubuntu-latest, r: 'release' , language: zh_CN, label: zh_CN } +# - {os: ubuntu-latest, r: 'release' , language: zh_TW, label: zh_TW } env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - RSPM: https://packagemanager.rstudio.com/cran/__linux__/focal/latest + R_KEEP_PKG_SOURCE: yes R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + ## Test in other locale (optional) + LANGUAGE: ${{ matrix.config.language }} ## R CMD check _R_CHECK_CRAN_INCOMING_: false _R_CHECK_LENGTH_1_CONDITION_: true _R_CHECK_LENGTH_1_LOGIC2_: true _R_CHECK_MATRIX_DATA_: true _R_CHECK_SUGGESTS_ONLY_: true - + _R_CHECK_S3_METHODS_SHOW_POSSIBLE_ISSUES_: true + steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-pandoc@v2 - uses: r-lib/actions/setup-tinytex@v2 - - name: Install additional LaTeX packages run: | tlmgr --version @@ -54,61 +61,41 @@ jobs: - uses: r-lib/actions/setup-r@v2 with: r-version: ${{ matrix.config.r }} - - - name: Query R package dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") - shell: Rscript {0} - - - name: Cache R packages - if: runner.os != 'Windows' - uses: actions/cache@v3 + http-user-agent: ${{ matrix.config.http-user-agent }} + use-public-rspm: true + + - uses: r-lib/actions/setup-r-dependencies@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- - - - name: Install R package system dependencies (Linux) - if: runner.os == 'Linux' - env: - RHUB_PLATFORM: linux-x86_64-ubuntu-gcc - run: | - Rscript -e "remotes::install_github('r-hub/sysreqs')" - sysreqs=$(Rscript -e "cat(sysreqs::sysreq_commands('DESCRIPTION'))") - sudo -s eval "$sysreqs" - sudo apt install -y libcurl4-openssl-dev - - - name: Install R package dependencies - run: | - remotes::install_deps(dependencies = TRUE) - install.packages(".", repos = NULL, type = "source") ## self vignette engine - shell: Rscript {0} - - - name: Install 'rcmdcheck' - run: | - remotes::install_cran("rcmdcheck") - library(rcmdcheck) ## triggers an error, if installation failed - shell: Rscript {0} + extra-packages: any::rcmdcheck + needs: check - name: Session info run: | options(width = 100) capabilities() + parallelly::availableCores(which = "all") pkgs <- installed.packages()[, "Package"] sessioninfo::session_info(pkgs, include_base = TRUE) + ## Verify LANGUAGE settings by generating a translatable error + cat(sprintf("LANGUAGE=%s\n", sQuote(Sys.getenv("LANGUAGE")))) + cat(sprintf("locales: %s\n", sQuote(Sys.getlocale()))) + tryCatch(log("a"), error = conditionMessage) shell: Rscript {0} - name: Check run: | skip_vignettes <- (getRversion() < "4.0.0") - rcmdcheck::rcmdcheck(build_args = if (skip_vignettes) "--no-build-vignettes" else "--compact-vignettes='gs+qpdf'", args = c("--no-manual", "--as-cran", if (skip_vignettes) "--ignore-vignettes"), error_on = "error", check_dir = "check") + rcmdcheck::rcmdcheck( + build_args = if (skip_vignettes) "--no-build-vignettes" else "--compact-vignettes='gs+qpdf'", + args = c("--no-manual", "--as-cran", if (skip_vignettes) "--ignore-vignettes"), + error_on = "error", + check_dir = "check" + ) shell: Rscript {0} - name: Upload check results if: failure() - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: ${{ runner.os }}-r${{ matrix.config.r }}-results path: check diff --git a/.github/workflows/covr.yaml b/.github/workflows/covr.yaml index 96b9fa5..81af6c7 100644 --- a/.github/workflows/covr.yaml +++ b/.github/workflows/covr.yaml @@ -4,11 +4,11 @@ name: covr jobs: covr: - if: "! contains(github.event.head_commit.message, '[ci skip]')" + if: "! contains(github.event.head_commit.message, '[ci skip]')" timeout-minutes: 45 - - runs-on: ubuntu-20.04 + + runs-on: ubuntu-latest name: covr @@ -17,48 +17,39 @@ jobs: env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} - RSPM: https://packagemanager.rstudio.com/cran/__linux__/focal/latest + R_KEEP_PKG_SOURCE: yes R_REMOTES_NO_ERRORS_FROM_WARNINGS: true + ## Test in other locale (optional) + LANGUAGE: ${{ matrix.config.language }} ## R CMD check + _R_CHECK_CRAN_INCOMING_: false _R_CHECK_LENGTH_1_CONDITION_: true _R_CHECK_LENGTH_1_LOGIC2_: true _R_CHECK_MATRIX_DATA_: true - _R_CHECK_CRAN_INCOMING_: false + _R_CHECK_SUGGESTS_ONLY_: true + _R_CHECK_THINGS_IN_TEMP_DIR_: true + RCMDCHECK_ERROR_ON: note + ## Specific to futures + R_FUTURE_RNG_ONMISUSE: error steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - uses: r-lib/actions/setup-r@v2 with: - r-version: release - - - uses: r-lib/actions/setup-pandoc@v2 + use-public-rspm: true - - name: Query dependencies - run: | - install.packages('remotes') - saveRDS(remotes::dev_package_deps(dependencies = TRUE), ".github/depends.Rds", version = 2) - writeLines(sprintf("R-%i.%i", getRversion()$major, getRversion()$minor), ".github/R-version") - shell: Rscript {0} - - - name: Cache R packages - uses: actions/cache@v3 + - uses: r-lib/actions/setup-r-dependencies@v2 with: - path: ${{ env.R_LIBS_USER }} - key: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1-${{ hashFiles('.github/depends.Rds') }} - restore-keys: ${{ runner.os }}-${{ hashFiles('.github/R-version') }}-1- - - - name: Install system dependencies - env: - RHUB_PLATFORM: linux-x86_64-ubuntu-gcc - run: | - Rscript -e "remotes::install_github('r-hub/sysreqs')" - sysreqs=$(Rscript -e "cat(sysreqs::sysreq_commands('DESCRIPTION'))") - sudo -s eval "$sysreqs" + extra-packages: | + any::rcmdcheck + any::remotes + any::sessioninfo + any::covr + needs: check - name: Install dependencies run: | - install.packages(c("covr", "sessioninfo")) remotes::install_deps(dependencies = TRUE) install.packages(".", repos=NULL, type="source") shell: Rscript {0} @@ -76,7 +67,7 @@ jobs: ## https://app.codecov.io/gh///settings ## 2. Set 'CODECOV_TOKEN' in GitHub Secrets: ## https://github.com///settings/environments/ - coverage <- covr::package_coverage() + coverage <- covr::package_coverage(quiet = FALSE) print(coverage) covr::codecov(coverage = coverage, token="${{secrets.CODECOV_TOKEN}}") shell: Rscript {0}