GHA: Add a strict check job #194
This file contains hidden or 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
| on: [push, pull_request] | |
| name: R-CMD-check | |
| jobs: | |
| R-CMD-check: | |
| if: "! contains(github.event.head_commit.message, '[ci skip]')" | |
| timeout-minutes: 30 | |
| runs-on: ${{ matrix.config.os }} | |
| name: ${{ matrix.config.os }} (${{ matrix.config.r }}) ${{ matrix.config.label }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: | |
| - {os: windows-latest, r: 'devel' } | |
| - {os: windows-latest, r: 'release' } | |
| - {os: windows-latest, r: 'oldrel' } | |
| - {os: macOS-latest, r: 'devel' } | |
| - {os: macOS-latest, r: 'release' } | |
| - {os: macOS-latest, r: 'oldrel' } | |
| - {os: ubuntu-latest, r: 'devel', strict: true, label: 'strict' } | |
| - {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: '4.0' } | |
| - {os: ubuntu-latest, r: 'release' , language: ko, label: ko } | |
| - {os: ubuntu-latest, r: 'release' , globals_keepWhere: true, label: 'keepWhere' } | |
| - {os: ubuntu-latest, r: 'release' , globals_keepWhere: false, label: '!keepWhere' } | |
| - {os: windows-latest, r: 'devel', future_version: develop, label: 'w/ future-develop' } | |
| - {os: ubuntu-latest, r: 'release', future_version: develop, label: 'w/ future-develop' } | |
| env: | |
| GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} | |
| 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_MATRIX_DATA_: true | |
| _R_CHECK_SUGGESTS_ONLY_: true | |
| _R_CHECK_THINGS_IN_TEMP_DIR_: true | |
| ## Specific to 'rcmdcheck' | |
| RCMDCHECK_ERROR_ON: note | |
| ## Specific to futures | |
| R_FUTURE_RNG_ONMISUSE: error | |
| R_FUTURE_GLOBALS_KEEPWHERE: ${{ matrix.config.globals_keepWhere }} | |
| R_FUTURE_VERSION: ${{ matrix.config.future_version }} | |
| R_GLOBALS_VERSION: ${{ matrix.config.globals_version }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: r-lib/actions/setup-pandoc@v2 | |
| - uses: r-lib/actions/setup-r@v2 | |
| with: | |
| r-version: ${{ matrix.config.r }} | |
| http-user-agent: ${{ matrix.config.http-user-agent }} | |
| use-public-rspm: true | |
| - uses: r-lib/actions/setup-r-dependencies@v2 | |
| with: | |
| extra-packages: any::rcmdcheck | |
| needs: check | |
| - name: Install package itself (special case) | |
| run: | | |
| install.packages(".", repos = NULL, type = "source") ## needed by parallel workers | |
| shell: Rscript {0} | |
| - name: Test with specific future version? | |
| run: | | |
| globals_version <- Sys.getenv("R_GLOBALS_VERSION") | |
| if (nzchar(globals_version)) { | |
| install.packages("remotes") | |
| remotes::install_github("futureverse/future", ref=globals_version) | |
| } | |
| future_version <- Sys.getenv("R_FUTURE_VERSION") | |
| if (nzchar(future_version)) { | |
| install.packages("remotes") | |
| remotes::install_github("futureverse/future", ref=future_version) | |
| } | |
| shell: Rscript {0} | |
| - name: Session info | |
| run: | | |
| options(width = 100) | |
| parallelly::availableCores(which = "all") | |
| sapply(c(physical_cores = FALSE, logical_cores = TRUE), parallel::detectCores) | |
| if (require(RhpcBLASctl, quietly=TRUE)) c(get_num_procs = get_num_procs(), get_num_cores = get_num_cores(), blas_get_num_procs = blas_get_num_procs(), omp_get_num_procs = omp_get_num_procs(), omp_get_max_threads = omp_get_max_threads()) | |
| capabilities() | |
| 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: | | |
| if ("${{ matrix.config.strict }}" == "true") { | |
| Sys.setenv(NOT_CRAN = "true") | |
| Sys.setenv(R_FUTURE_GLOBALENV_ONMISUSE = "error") | |
| Sys.setenv(R_FUTURE_RNG_ONMISUSE = "error") | |
| Sys.setenv(R_FUTURE_FUTURE_EARLYSIGNAL = "defunct") | |
| Sys.setenv(R_FUTURE_FUTURE_LOCAL = "defunct") | |
| Sys.setenv(R_FUTURE_FUTURE_GC = "defunct") | |
| Sys.setenv(R_FUTURE_PLAN_EARLYSIGNAL = "defunct") | |
| Sys.setenv(R_FUTURE_RESOLVED_RUN = "defunct") | |
| } | |
| if (nzchar(Sys.getenv("R_FUTURE_PLAN"))) Sys.setenv(RCMDCHECK_ERROR_ON = "error") | |
| rcmdcheck::rcmdcheck( | |
| args = c("--no-manual", "--as-cran"), | |
| check_dir = "check" | |
| ) | |
| shell: Rscript {0} | |
| - name: Upload check results | |
| if: failure() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: ${{ runner.os }}-r${{ matrix.config.r }}-results | |
| path: check |