From 425b075d0148fa34a8a6342a50eef7b71f010cf2 Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:03:43 +0100 Subject: [PATCH 1/7] fix(githubaction): skip test on mac - as this is expected on GitHub action, to fail to find functional cluster workers --- tests/testthat/test-unittest.R | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/tests/testthat/test-unittest.R b/tests/testthat/test-unittest.R index 8a13f0a..ea6f4b0 100644 --- a/tests/testthat/test-unittest.R +++ b/tests/testthat/test-unittest.R @@ -116,7 +116,26 @@ test_that("parallel processing runs successfully", { } mockery::stub(runner, "simulation::model", test_model) param <- list(cores = 2L, number_of_runs = 5L) - result <- runner(param, use_future_seeding = TRUE) + + # Attempt parallel processing + result <- tryCatch({ + runner(param, use_future_seeding = TRUE) + }, error = function(e) { + # Check if this is a parallel processing error + if (grepl("Failed to find a functional cluster workers|FutureError", + e$message)) { + # Skip test on macOS if parallel processing fails + if (Sys.info()[["sysname"]] == "Darwin") { + skip(paste("Parallel processing not available on this macOS system", + "- this is expected in CI environments")) + } + # Else throw an error + stop(e, call. = FALSE) + } else { + # Re-throw if it's a different error + stop(e, call. = FALSE) + } + }) # Check if results contain expected structure expect_true("arrivals" %in% names(result)) From bfafbbe92d720a712bbf005dede7235cc20c4c4e Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:06:23 +0100 Subject: [PATCH 2/7] ci(githubaction): add OS choice when manual trigger R-CMD-check --- .github/workflows/R-CMD-check.yaml | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 56cc446..f079d31 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -4,6 +4,17 @@ on: push: branches: [main] workflow_dispatch: + inputs: + os: + description: 'Operating system to run on' + required: true + default: 'all' + type: choice + options: + - all + - ubuntu-latest + - windows-latest + - macos-latest name: R-CMD-check.yaml @@ -11,17 +22,13 @@ permissions: read-all jobs: R-CMD-check: - runs-on: ${{ matrix.config.os }} - - name: ${{ matrix.config.os }} (${{ matrix.config.r }}) - + if: ${{ github.event_name == 'push' || inputs.os != '' }} strategy: fail-fast: false matrix: - config: - - {os: macos-latest, r: 'release'} - - {os: windows-latest, r: 'release'} - - {os: ubuntu-latest, r: 'release'} + os: ${{ github.event_name == 'workflow_dispatch' && inputs.os != 'all' && fromJson('["' + inputs.os + '"]') || fromJson('["ubuntu-latest","windows-latest","macos-latest"]') }} + runs-on: ${{ matrix.os }} + name: ${{ matrix.os }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} From f1e472baaa004045fcfd3f6ecf45341048a531b6 Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:08:16 +0100 Subject: [PATCH 3/7] ci(githubaction): addressing workflow file error --- .github/workflows/R-CMD-check.yaml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index f079d31..44db66b 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -21,14 +21,27 @@ name: R-CMD-check.yaml permissions: read-all jobs: + set-matrix: + runs-on: ubuntu-latest + outputs: + os: ${{ steps.set-matrix.outputs.os }} + steps: + - id: set-matrix + run: | + if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ inputs.os }}" != "all" ]; then + echo "os=[\"${{ inputs.os }}\"]" >> $GITHUB_OUTPUT + else + echo 'os=["ubuntu-latest","windows-latest","macos-latest"]' >> $GITHUB_OUTPUT + fi + R-CMD-check: - if: ${{ github.event_name == 'push' || inputs.os != '' }} + needs: set-matrix + runs-on: ${{ matrix.os }} + strategy: fail-fast: false matrix: - os: ${{ github.event_name == 'workflow_dispatch' && inputs.os != 'all' && fromJson('["' + inputs.os + '"]') || fromJson('["ubuntu-latest","windows-latest","macos-latest"]') }} - runs-on: ${{ matrix.os }} - name: ${{ matrix.os }} + os: ${{ fromJson(needs.set-matrix.outputs.os) }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} From 0779ef8a1d612afb4882099b2c6f8ca164b0de1a Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:13:12 +0100 Subject: [PATCH 4/7] ci(githubaction): set to macos-14 (as recommended for r workflows) (as may workflows have experienced issues on new ARM runners, with macos-latest now ARM-based) --- .github/workflows/R-CMD-check.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 44db66b..becc979 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,4 +1,4 @@ -# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples +# Workflow adapted 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: @@ -14,7 +14,7 @@ on: - all - ubuntu-latest - windows-latest - - macos-latest + - macos-14 name: R-CMD-check.yaml @@ -31,7 +31,7 @@ jobs: if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ inputs.os }}" != "all" ]; then echo "os=[\"${{ inputs.os }}\"]" >> $GITHUB_OUTPUT else - echo 'os=["ubuntu-latest","windows-latest","macos-latest"]' >> $GITHUB_OUTPUT + echo 'os=["ubuntu-latest","windows-latest","macos-14"]' >> $GITHUB_OUTPUT fi R-CMD-check: From e1b3f3fb48217df141fb25944447a842c5a6c092 Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:15:02 +0100 Subject: [PATCH 5/7] ci(githubaction): switched to macos-13 (as -14 was also ARm, but 13 is intel) --- .github/workflows/R-CMD-check.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index becc979..4cfa42d 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -14,7 +14,7 @@ on: - all - ubuntu-latest - windows-latest - - macos-14 + - macos-13 name: R-CMD-check.yaml @@ -31,7 +31,7 @@ jobs: if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ inputs.os }}" != "all" ]; then echo "os=[\"${{ inputs.os }}\"]" >> $GITHUB_OUTPUT else - echo 'os=["ubuntu-latest","windows-latest","macos-14"]' >> $GITHUB_OUTPUT + echo 'os=["ubuntu-latest","windows-latest","macos-13"]' >> $GITHUB_OUTPUT fi R-CMD-check: From 277ed09af909103804fbbf5a845a2526229ed49e Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:16:39 +0100 Subject: [PATCH 6/7] ci(githubaction): change to be more similar to old set up of OS in the action --- .github/workflows/R-CMD-check.yaml | 46 ++++++++++++++---------------- 1 file changed, 22 insertions(+), 24 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index 4cfa42d..cba410c 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,20 +1,21 @@ # Workflow adapted 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] workflow_dispatch: inputs: - os: - description: 'Operating system to run on' - required: true - default: 'all' - type: choice - options: - - all - - ubuntu-latest - - windows-latest - - macos-13 + os: + description: 'Operating system to run on' + required: true + default: 'all' + type: choice + options: + - all + - ubuntu-latest + - windows-latest + - macos-13 name: R-CMD-check.yaml @@ -24,45 +25,42 @@ jobs: set-matrix: runs-on: ubuntu-latest outputs: - os: ${{ steps.set-matrix.outputs.os }} + matrix: ${{ steps.set-matrix.outputs.matrix }} steps: - id: set-matrix run: | + configs='[ + {"os": "ubuntu-latest", "r": "release"}, + {"os": "windows-latest", "r": "release"}, + {"os": "macos-13", "r": "release"} + ]' if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ inputs.os }}" != "all" ]; then - echo "os=[\"${{ inputs.os }}\"]" >> $GITHUB_OUTPUT - else - echo 'os=["ubuntu-latest","windows-latest","macos-13"]' >> $GITHUB_OUTPUT + # Filter configs for the selected OS + configs=$(echo "$configs" | jq --arg os "${{ inputs.os }}" '[.[] | select(.os == $os)]') fi + echo "matrix=$configs" >> $GITHUB_OUTPUT R-CMD-check: needs: set-matrix - runs-on: ${{ matrix.os }} - + runs-on: ${{ matrix.config.os }} strategy: fail-fast: false matrix: - os: ${{ fromJson(needs.set-matrix.outputs.os) }} - + config: ${{ fromJson(needs.set-matrix.outputs.matrix) }} env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} R_KEEP_PKG_SOURCE: yes - 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 - - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true From bd172414c5448ffe9564e36528020872be7b6884 Mon Sep 17 00:00:00 2001 From: amyheather Date: Thu, 5 Jun 2025 10:20:46 +0100 Subject: [PATCH 7/7] ci(githubaction): another attempt at resolving issue --- .github/workflows/R-CMD-check.yaml | 50 +++++++++++++++++------------- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/.github/workflows/R-CMD-check.yaml b/.github/workflows/R-CMD-check.yaml index cba410c..9bf1b2e 100644 --- a/.github/workflows/R-CMD-check.yaml +++ b/.github/workflows/R-CMD-check.yaml @@ -1,4 +1,4 @@ -# Workflow adapted from https://github.com/r-lib/actions/tree/v2/examples +# 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: @@ -6,61 +6,69 @@ on: branches: [main] workflow_dispatch: inputs: - os: + os_choice: description: 'Operating system to run on' required: true default: 'all' type: choice options: - - all - - ubuntu-latest - - windows-latest - - macos-13 + - all + - ubuntu + - macos + - windows name: R-CMD-check.yaml permissions: read-all jobs: - set-matrix: + setup-matrix: runs-on: ubuntu-latest outputs: - matrix: ${{ steps.set-matrix.outputs.matrix }} + matrix: ${{ steps.setup-matrix.outputs.matrix }} steps: - - id: set-matrix + - id: setup-matrix run: | - configs='[ - {"os": "ubuntu-latest", "r": "release"}, - {"os": "windows-latest", "r": "release"}, - {"os": "macos-13", "r": "release"} - ]' - if [ "${{ github.event_name }}" = "workflow_dispatch" ] && [ "${{ inputs.os }}" != "all" ]; then - # Filter configs for the selected OS - configs=$(echo "$configs" | jq --arg os "${{ inputs.os }}" '[.[] | select(.os == $os)]') + if [[ "${{ github.event_name }}" == "push" || "${{ github.event.inputs.os_choice }}" == "all" ]]; then + echo 'matrix={"config":[{"os":"macos-latest","r":"release"},{"os":"windows-latest","r":"release"},{"os":"ubuntu-latest","r":"release"}]}' >> $GITHUB_OUTPUT + elif [[ "${{ github.event.inputs.os_choice }}" == "ubuntu" ]]; then + echo 'matrix={"config":[{"os":"ubuntu-latest","r":"release"}]}' >> $GITHUB_OUTPUT + elif [[ "${{ github.event.inputs.os_choice }}" == "macos" ]]; then + echo 'matrix={"config":[{"os":"macos-latest","r":"release"}]}' >> $GITHUB_OUTPUT + elif [[ "${{ github.event.inputs.os_choice }}" == "windows" ]]; then + echo 'matrix={"config":[{"os":"windows-latest","r":"release"}]}' >> $GITHUB_OUTPUT fi - echo "matrix=$configs" >> $GITHUB_OUTPUT R-CMD-check: - needs: set-matrix + needs: setup-matrix runs-on: ${{ matrix.config.os }} + + name: ${{ matrix.config.os }} (${{ matrix.config.r }}) + strategy: fail-fast: false - matrix: - config: ${{ fromJson(needs.set-matrix.outputs.matrix) }} + matrix: ${{ fromJson(needs.setup-matrix.outputs.matrix) }} + env: GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }} R_KEEP_PKG_SOURCE: yes + 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 + - uses: r-lib/actions/check-r-package@v2 with: upload-snapshots: true