From ac25f91f87ec4c9f0fd41cf0427931fb1bb64e7b Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 10 Dec 2025 16:24:38 +0100 Subject: [PATCH 01/41] Add helper workflows to make testing more modular --- .github/workflows/prepare-matrix.yml | 23 +++++++++ .github/workflows/run-matrix-tests.yml | 67 ++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 .github/workflows/prepare-matrix.yml create mode 100644 .github/workflows/run-matrix-tests.yml diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml new file mode 100644 index 0000000..d854db5 --- /dev/null +++ b/.github/workflows/prepare-matrix.yml @@ -0,0 +1,23 @@ +name: Prepare Test Matrix + +on: + workflow_call: + outputs: + matrix: + description: 'JSON test matrix to be used by caller' + value: ${{ jobs.prepare.outputs.matrix }} + +jobs: + prepare: + runs-on: ubuntu-latest + outputs: + matrix: ${{ steps.load.outputs.matrix }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Load runner-matrix.json + id: load + run: | + MATRIX_JSON=$(jq -c . .github/runner-matrix.json) + echo "matrix=$MATRIX_JSON" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/run-matrix-tests.yml b/.github/workflows/run-matrix-tests.yml new file mode 100644 index 0000000..c3bba7a --- /dev/null +++ b/.github/workflows/run-matrix-tests.yml @@ -0,0 +1,67 @@ +name: Run matrix tests + +on: + workflow_call: + inputs: + kotlin-version: + description: 'Override Kotlin version?' + required: false + default: '' + type: string + testballoon-version: + description: 'Override TestBalloon version (full version string)?' + required: false + default: '' + type: string + matrix: + description: 'JSON matrix definition (for strategy.matrix)' + required: true + type: string + +jobs: + test: + strategy: + fail-fast: false + matrix: ${{ fromJson(inputs.matrix) }} + + runs-on: ${{ matrix.os }} + timeout-minutes: 300 + + env: + KOTLIN_VERSION_ENV: ${{ inputs.kotlin-version }} + TESTBALLOON_VERSION_OVERRIDE: ${{ inputs.testballoon-version }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: '17' + + - name: Run tests + shell: 'bash' + run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ matrix.testArgs }} + + - name: Test Report + uses: dorny/test-reporter@v2 + env: + NODE_OPTIONS: --max-old-space-size=8192 + with: + name: All Tests (${{ matrix.os }}-${{ matrix.name }}-${{ matrix.arch }}) + path: "**/build/test-results/**/TEST*.xml" + list-suites: failed + list-tests: failed + reporter: java-junit + use-actions-summary: true + + - name: Upload metrics + uses: actions/upload-artifact@v4 + with: + name: metrics-${{ matrix.os }}-${{ matrix.name }}-${{ matrix.arch }} + path: metrics/*.json + if-no-files-found: ignore From a931ed49fa9bb800a0c53b798173294623f7db17 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 11:35:05 +0100 Subject: [PATCH 02/41] Add more helper workflows --- .github/workflows/build-everything.yml | 26 ++++++++++ .github/workflows/build-matrix-entry.yml | 50 +++++++++++++++++++ .github/workflows/prepare-matrix.yml | 11 ++-- .github/workflows/test-everything.yml | 38 ++++++++++++++ ...matrix-tests.yml => test-matrix-entry.yml} | 37 +++++++++----- 5 files changed, 146 insertions(+), 16 deletions(-) create mode 100644 .github/workflows/build-everything.yml create mode 100644 .github/workflows/build-matrix-entry.yml create mode 100644 .github/workflows/test-everything.yml rename .github/workflows/{run-matrix-tests.yml => test-matrix-entry.yml} (60%) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml new file mode 100644 index 0000000..db6c4c0 --- /dev/null +++ b/.github/workflows/build-everything.yml @@ -0,0 +1,26 @@ +name: build + +on: + workflow_dispatch: + inputs: + matrix-file-name: + description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' + required: true + type: string + +jobs: + prepare-matrix: + uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests + with: + file-name: ${{ inputs.matrix-file-name }} + + build: + needs: prepare-matrix + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} + uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests + with: + module: ${{ matrix.module }} + kotlin-version: ${{ matrix.kotlinVersion }} + testballoon-version: ${{ matrix.testballoonVersion }} diff --git a/.github/workflows/build-matrix-entry.yml b/.github/workflows/build-matrix-entry.yml new file mode 100644 index 0000000..f5ab138 --- /dev/null +++ b/.github/workflows/build-matrix-entry.yml @@ -0,0 +1,50 @@ +name: Build Matrix Entry + +on: + workflow_call: + inputs: + module: + description: "Module path/name (used for artifact name and jar path)" + required: true + type: string + kotlin-version: + description: "Override Kotlin version?" + required: false + default: "" + type: string + testballoon-version: + description: "Override TestBalloon version (full version string)?" + required: false + default: "" + type: string + +jobs: + build: + runs-on: macos-latest + timeout-minutes: 120 + + env: + KOTLIN_VERSION_ENV: ${{ inputs.kotlin-version }} + TESTBALLOON_VERSION_OVERRIDE: ${{ inputs.testballoon-version }} + + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + submodules: recursive + + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: temurin + java-version: "17" + + - name: Build jar + run: ./gradlew assemble + + - name: Upload jar ${{ inputs.module }} + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.module }} + path: ${{ inputs.module }}/build/libs/*.jar + if-no-files-found: error diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index d854db5..7b39369 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -2,9 +2,14 @@ name: Prepare Test Matrix on: workflow_call: + inputs: + file-name: + description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' + required: true + type: string outputs: matrix: - description: 'JSON test matrix to be used by caller' + description: 'JSON matrix to be used by caller' value: ${{ jobs.prepare.outputs.matrix }} jobs: @@ -16,8 +21,8 @@ jobs: - name: Checkout uses: actions/checkout@v4 - - name: Load runner-matrix.json + - name: Load matrix.json id: load run: | - MATRIX_JSON=$(jq -c . .github/runner-matrix.json) + MATRIX_JSON=$(jq -c . ${{ inputs.file-name}}) echo "matrix=$MATRIX_JSON" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml new file mode 100644 index 0000000..baa4598 --- /dev/null +++ b/.github/workflows/test-everything.yml @@ -0,0 +1,38 @@ +name: Test Everything (All OS/Arch) + +on: + workflow_dispatch: + inputs: + kotlin-version: + description: 'Override Kotlin version?' + required: false + default: '' + type: string + testballoon-version: + description: 'Override TestBalloon version (full version string)?' + required: false + default: '' + type: string + matrix-file-name: + description: 'Json File containing arbitrary strategy-matrix' + required: true + type: string + +jobs: + prepare-matrix: + uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests + with: + file-name: ${{ inputs.matrix-file-name }} + + run-tests: + needs: prepare-matrix + strategy: + matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} + uses: a-sit-plus/internal-workflows/.github/workflows/test-matrix-entry.yml@feature/modularTests + with: + os: ${{ matrix.os }} + name: ${{ matrix.name }} + arch: ${{ matrix.arch }} + testArgs: ${{ matrix.testArgs }} + kotlin-version: ${{ inputs.kotlin-version }} + testballoon-version: ${{ inputs.testballoon-version }} \ No newline at end of file diff --git a/.github/workflows/run-matrix-tests.yml b/.github/workflows/test-matrix-entry.yml similarity index 60% rename from .github/workflows/run-matrix-tests.yml rename to .github/workflows/test-matrix-entry.yml index c3bba7a..2228c6f 100644 --- a/.github/workflows/run-matrix-tests.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -1,8 +1,27 @@ -name: Run matrix tests +name: Run inputs tests on: workflow_call: inputs: + os: + description: 'GitHub Actions runner label to execute this test job on + (e.g. ubuntu-latest, macos-latest, windows-latest).' + required: true + type: string + name: + description: 'Logical name of the matrix entry, used for display and reporting + (for example: jvm, native, android, ios)' + required: true + type: string + arch: + description: 'Target architecture for this test run + (for example: x64, arm64)' + required: true + type: string + testArgs: + description: 'Gradle command-line arguments specifying which tests to run' + required: true + type: string kotlin-version: description: 'Override Kotlin version?' required: false @@ -13,18 +32,10 @@ on: required: false default: '' type: string - matrix: - description: 'JSON matrix definition (for strategy.matrix)' - required: true - type: string jobs: test: - strategy: - fail-fast: false - matrix: ${{ fromJson(inputs.matrix) }} - - runs-on: ${{ matrix.os }} + runs-on: ${{ inputs.os }} timeout-minutes: 300 env: @@ -45,14 +56,14 @@ jobs: - name: Run tests shell: 'bash' - run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ matrix.testArgs }} + run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ inputs.testArgs }} - name: Test Report uses: dorny/test-reporter@v2 env: NODE_OPTIONS: --max-old-space-size=8192 with: - name: All Tests (${{ matrix.os }}-${{ matrix.name }}-${{ matrix.arch }}) + name: All Tests (${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }}) path: "**/build/test-results/**/TEST*.xml" list-suites: failed list-tests: failed @@ -62,6 +73,6 @@ jobs: - name: Upload metrics uses: actions/upload-artifact@v4 with: - name: metrics-${{ matrix.os }}-${{ matrix.name }}-${{ matrix.arch }} + name: metrics-${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }} path: metrics/*.json if-no-files-found: ignore From ca6da0740b92908bf033cba74f4800f61c699508 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 11:47:11 +0100 Subject: [PATCH 03/41] Allow workflow call --- .github/workflows/build-everything.yml | 2 +- .github/workflows/test-everything.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index db6c4c0..4144afd 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -1,7 +1,7 @@ name: build on: - workflow_dispatch: + workflow_call: inputs: matrix-file-name: description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index baa4598..0ea842f 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -1,7 +1,7 @@ name: Test Everything (All OS/Arch) on: - workflow_dispatch: + workflow_call: inputs: kotlin-version: description: 'Override Kotlin version?' From f1f7198df38b5149545eab076f198b635f370784 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 14:22:31 +0100 Subject: [PATCH 04/41] Allow version inputs --- .github/workflows/build-everything.yml | 14 ++++++++++++-- .github/workflows/prepare-matrix.yml | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 4144afd..2bc2a89 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -3,6 +3,16 @@ name: build on: workflow_call: inputs: + kotlin-version: + description: 'Override Kotlin version?' + required: false + default: '' + type: string + testballoon-version: + description: 'Override TestBalloon version (full version string)?' + required: false + default: '' + type: string matrix-file-name: description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' required: true @@ -22,5 +32,5 @@ jobs: uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests with: module: ${{ matrix.module }} - kotlin-version: ${{ matrix.kotlinVersion }} - testballoon-version: ${{ matrix.testballoonVersion }} + kotlin-version: ${{ inputs.kotlinVersion }} + testballoon-version: ${{ inputs.testballoonVersion }} diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 7b39369..505991b 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -4,7 +4,7 @@ on: workflow_call: inputs: file-name: - description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' + description: 'Json File containing arbitrary strategy-matrix' required: true type: string outputs: From 9feb6abc0773bcb18b92450581871a13078abd11 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 16:21:22 +0100 Subject: [PATCH 05/41] Add gradle native caching --- .github/workflows/build-matrix-entry.yml | 5 +++++ .github/workflows/test-matrix-entry.yml | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/.github/workflows/build-matrix-entry.yml b/.github/workflows/build-matrix-entry.yml index f5ab138..3a632a4 100644 --- a/.github/workflows/build-matrix-entry.yml +++ b/.github/workflows/build-matrix-entry.yml @@ -39,6 +39,11 @@ jobs: distribution: temurin java-version: "17" + - name: Setup Gradle # Gradle-native cache handling + uses: gradle/actions/setup-gradle@v5 + with: + cache-read-only: true + - name: Build jar run: ./gradlew assemble diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 2228c6f..a392731 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -3,6 +3,11 @@ name: Run inputs tests on: workflow_call: inputs: + cache-override: + description: 'Override Cache?' + required: true + default: false + type: boolean os: description: 'GitHub Actions runner label to execute this test job on (e.g. ubuntu-latest, macos-latest, windows-latest).' @@ -54,6 +59,11 @@ jobs: distribution: temurin java-version: '17' + - name: Setup Gradle # Gradle-native cache handling + uses: gradle/actions/setup-gradle@v5 + with: + cache-read-only: ${{ inputs.cache-override }} + - name: Run tests shell: 'bash' run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ inputs.testArgs }} From 24138c524ab5a65a112d1814733951bfb909377e Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 16:24:22 +0100 Subject: [PATCH 06/41] Add gradle native caching --- .github/workflows/test-everything.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 0ea842f..5ed0653 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -3,6 +3,11 @@ name: Test Everything (All OS/Arch) on: workflow_call: inputs: + cache-override: + description: 'Override Cache?' + required: true + default: false + type: boolean kotlin-version: description: 'Override Kotlin version?' required: false @@ -30,6 +35,7 @@ jobs: matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} uses: a-sit-plus/internal-workflows/.github/workflows/test-matrix-entry.yml@feature/modularTests with: + cache-override: ${{ inputs.cache-override }} os: ${{ matrix.os }} name: ${{ matrix.name }} arch: ${{ matrix.arch }} From 38de67fef1be347327ba7bc06489654a91fd5ce9 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 16:52:54 +0100 Subject: [PATCH 07/41] Add gradle native caching --- .github/workflows/test-matrix-entry.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index a392731..660205a 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -62,7 +62,8 @@ jobs: - name: Setup Gradle # Gradle-native cache handling uses: gradle/actions/setup-gradle@v5 with: - cache-read-only: ${{ inputs.cache-override }} + cache-read-only: ${{ !inputs.cache-override }} + dependency-graph: ${{ inputs.cache-override && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot - name: Run tests shell: 'bash' From 3882c20bfce8e09d5b62e65b25c74a1e96331196 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 16:55:52 +0100 Subject: [PATCH 08/41] Add gradle native caching --- .github/workflows/test-matrix-entry.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 660205a..0e6f051 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -63,6 +63,7 @@ jobs: uses: gradle/actions/setup-gradle@v5 with: cache-read-only: ${{ !inputs.cache-override }} + cache-cleanup: 'never' dependency-graph: ${{ inputs.cache-override && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot - name: Run tests From 810351c879d0f0a592ac1e9e2c50f748d46bcc18 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 7 Jan 2026 17:15:11 +0100 Subject: [PATCH 09/41] Rename input param --- .github/workflows/test-everything.yml | 4 ++-- .github/workflows/test-matrix-entry.yml | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 5ed0653..e3afbf2 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -3,7 +3,7 @@ name: Test Everything (All OS/Arch) on: workflow_call: inputs: - cache-override: + override-cache: description: 'Override Cache?' required: true default: false @@ -35,7 +35,7 @@ jobs: matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} uses: a-sit-plus/internal-workflows/.github/workflows/test-matrix-entry.yml@feature/modularTests with: - cache-override: ${{ inputs.cache-override }} + override-cache: ${{ inputs.override-cache }} os: ${{ matrix.os }} name: ${{ matrix.name }} arch: ${{ matrix.arch }} diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 0e6f051..6d7c0b9 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -3,10 +3,9 @@ name: Run inputs tests on: workflow_call: inputs: - cache-override: + override-cache: description: 'Override Cache?' required: true - default: false type: boolean os: description: 'GitHub Actions runner label to execute this test job on @@ -62,9 +61,9 @@ jobs: - name: Setup Gradle # Gradle-native cache handling uses: gradle/actions/setup-gradle@v5 with: - cache-read-only: ${{ !inputs.cache-override }} + cache-read-only: ${{ !inputs.override-cache }} cache-cleanup: 'never' - dependency-graph: ${{ inputs.cache-override && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot + dependency-graph: ${{ inputs.override-cache && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot - name: Run tests shell: 'bash' From 6aedfcb0340381c6044888ab7007ee0ffba3c51b Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 11:00:46 +0100 Subject: [PATCH 10/41] Add Android support --- .github/workflows/test-everything.yml | 1 + .github/workflows/test-matrix-entry.yml | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index e3afbf2..bf7b46e 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -40,5 +40,6 @@ jobs: name: ${{ matrix.name }} arch: ${{ matrix.arch }} testArgs: ${{ matrix.testArgs }} + enable-kvm: ${{ matrix.enableKvm || false }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} \ No newline at end of file diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 6d7c0b9..9f7da0b 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -26,6 +26,11 @@ on: description: 'Gradle command-line arguments specifying which tests to run' required: true type: string + enable-kvm: + description: 'Enable KVM for Android emulator tests' + required: false + default: false + type: boolean kotlin-version: description: 'Override Kotlin version?' required: false @@ -58,6 +63,14 @@ jobs: distribution: temurin java-version: '17' + # Only for Android Tests + - name: Enable KVM + if: inputs.enable-kvm + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + - name: Setup Gradle # Gradle-native cache handling uses: gradle/actions/setup-gradle@v5 with: From 4ef2a09a0b5453f3cf8363e8b05667d8ac6ee7c9 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 12:13:11 +0100 Subject: [PATCH 11/41] Add iOS support --- .github/workflows/test-everything.yml | 1 + .github/workflows/test-matrix-entry.yml | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index bf7b46e..b60e234 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -41,5 +41,6 @@ jobs: arch: ${{ matrix.arch }} testArgs: ${{ matrix.testArgs }} enable-kvm: ${{ matrix.enableKvm || false }} + xcode-version: ${{ matrix.xcodeVersion || '' }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} \ No newline at end of file diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 9f7da0b..5b5e4f2 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -31,6 +31,11 @@ on: required: false default: false type: boolean + xcode-version: + description: 'Xcode version for Apple platform tests (macos runners only)' + required: false + default: '' + type: string kotlin-version: description: 'Override Kotlin version?' required: false @@ -63,6 +68,12 @@ jobs: distribution: temurin java-version: '17' + - name: Setup Xcode + if: inputs.xcode-version != '' + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: ${{ inputs.xcode-version }} + # Only for Android Tests - name: Enable KVM if: inputs.enable-kvm @@ -84,11 +95,14 @@ jobs: - name: Test Report uses: dorny/test-reporter@v2 + if: always() env: NODE_OPTIONS: --max-old-space-size=8192 with: name: All Tests (${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }}) - path: "**/build/test-results/**/TEST*.xml" + path: | + **/build/outputs/androidTest-results/**/*.xml + **/build/test-results/**/*.xml list-suites: failed list-tests: failed reporter: java-junit From a228967522541431d58c244e684070bd8d678a63 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 16:12:22 +0100 Subject: [PATCH 12/41] Add dorny android path --- .github/workflows/test-matrix-entry.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 5b5e4f2..daa8c34 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -100,9 +100,7 @@ jobs: NODE_OPTIONS: --max-old-space-size=8192 with: name: All Tests (${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }}) - path: | - **/build/outputs/androidTest-results/**/*.xml - **/build/test-results/**/*.xml + path: "**/build/test-results/**/TEST*.xml,**/build/outputs/androidTest-results/managedDevice/**/TEST*.xml" list-suites: failed list-tests: failed reporter: java-junit From d41d2733874535bc8fbe0d640655f977a79fabc2 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 17:36:28 +0100 Subject: [PATCH 13/41] Add runner-setup action --- .github/workflows/test-matrix-entry.yml | 33 +++---------------------- 1 file changed, 4 insertions(+), 29 deletions(-) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index daa8c34..aead5d9 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -57,37 +57,12 @@ jobs: TESTBALLOON_VERSION_OVERRIDE: ${{ inputs.testballoon-version }} steps: - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: Setup Java - uses: actions/setup-java@v4 - with: - distribution: temurin - java-version: '17' - - - name: Setup Xcode - if: inputs.xcode-version != '' - uses: maxim-lobanov/setup-xcode@v1 + - name: Common setup + uses: a-sit-plus/internal-workflows/.github/actions/runner-setup@feature/modularTests with: xcode-version: ${{ inputs.xcode-version }} - - # Only for Android Tests - - name: Enable KVM - if: inputs.enable-kvm - run: | - echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules - sudo udevadm control --reload-rules - sudo udevadm trigger --name-match=kvm - - - name: Setup Gradle # Gradle-native cache handling - uses: gradle/actions/setup-gradle@v5 - with: - cache-read-only: ${{ !inputs.override-cache }} - cache-cleanup: 'never' - dependency-graph: ${{ inputs.override-cache && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot + enable-kvm: ${{ inputs.enable-kvm }} + override-cache: ${{ inputs.override-cache }} - name: Run tests shell: 'bash' From 8b156a8f126f5c18b3ec0501fea9761f330df8bf Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 17:36:34 +0100 Subject: [PATCH 14/41] Add runner-setup action --- .github/actions/runner-setup/action.yml | 50 +++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 .github/actions/runner-setup/action.yml diff --git a/.github/actions/runner-setup/action.yml b/.github/actions/runner-setup/action.yml new file mode 100644 index 0000000..d116df0 --- /dev/null +++ b/.github/actions/runner-setup/action.yml @@ -0,0 +1,50 @@ +name: Common CI Setup +description: Checkout + Java + optional Xcode + optional KVM + +inputs: + xcode-version: + description: Xcode version (macos only). Empty to skip. + required: false + default: "" + enable-kvm: + description: Enable KVM for Android emulator tests + required: false + default: "false" # composite inputs are strings + override-cache: + description: 'Override Cache?' + required: true + +runs: + using: "composite" + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: Setup Java + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "17" + + - name: Setup Xcode + if: ${{ inputs.xcode-version != '' }} + uses: maxim-lobanov/setup-xcode@v1 + with: + xcode-version: ${{ inputs.xcode-version }} + + - name: Enable KVM + if: ${{ inputs.enable-kvm == 'true' }} + shell: bash + run: | + echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules + sudo udevadm control --reload-rules + sudo udevadm trigger --name-match=kvm + + - name: Setup Gradle # Gradle-native cache handling + uses: gradle/actions/setup-gradle@v5 + with: + cache-read-only: ${{ inputs.override-cache != 'true' }} + cache-cleanup: 'never' + dependency-graph: ${{ inputs.override-cache == 'true' && 'generate-and-submit' || 'disabled' }} # Dependency graph for Dependabot From cb27bd876552b6482ba1fd36414eb0c8d3ca3035 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 17:51:59 +0100 Subject: [PATCH 15/41] Add reporting action --- .github/actions/common-reporting/action.yml | 40 +++++++++++++++++++ .../{runner-setup => common-setup}/action.yml | 0 .github/workflows/test-matrix-entry.yml | 22 ++-------- 3 files changed, 44 insertions(+), 18 deletions(-) create mode 100644 .github/actions/common-reporting/action.yml rename .github/actions/{runner-setup => common-setup}/action.yml (100%) diff --git a/.github/actions/common-reporting/action.yml b/.github/actions/common-reporting/action.yml new file mode 100644 index 0000000..d217203 --- /dev/null +++ b/.github/actions/common-reporting/action.yml @@ -0,0 +1,40 @@ +name: Reporting +description: Publish test report and upload metrics artifacts + +inputs: + report-name: + description: Typically name of workflow that called action + matrix-identifier: + description: Typically {os}-{runner}-{arch} + required: true + report-path: + description: Glob for test result XML files + required: false + default: "**/build/test-results/**/TEST*.xml,**/build/outputs/androidTest-results/managedDevice/**/TEST*.xml" + metrics-path: + description: Glob for metrics JSON files + required: false + default: "metrics/*.json" + +runs: + using: "composite" + steps: + - name: Test Report + uses: dorny/test-reporter@v2 + if: ${{ !cancelled() }} + env: + NODE_OPTIONS: --max-old-space-size=8192 + with: + name: ${{ inputs.caller-name }}-${{ inputs.name }} + path: ${{ inputs.report-path }} + list-suites: failed + list-tests: failed + reporter: java-junit + use-actions-summary: true + + - name: Upload metrics + uses: actions/upload-artifact@v4 + with: + name: metrics-${{ inputs.name }} + path: ${{ inputs.metrics-path }} + if-no-files-found: ignore diff --git a/.github/actions/runner-setup/action.yml b/.github/actions/common-setup/action.yml similarity index 100% rename from .github/actions/runner-setup/action.yml rename to .github/actions/common-setup/action.yml diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index aead5d9..dc9818c 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -68,22 +68,8 @@ jobs: shell: 'bash' run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ inputs.testArgs }} - - name: Test Report - uses: dorny/test-reporter@v2 - if: always() - env: - NODE_OPTIONS: --max-old-space-size=8192 + - name: Reporting + uses: a-sit-plus/internal-workflows/.github/actions/reporting@feature/modularTests with: - name: All Tests (${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }}) - path: "**/build/test-results/**/TEST*.xml,**/build/outputs/androidTest-results/managedDevice/**/TEST*.xml" - list-suites: failed - list-tests: failed - reporter: java-junit - use-actions-summary: true - - - name: Upload metrics - uses: actions/upload-artifact@v4 - with: - name: metrics-${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }} - path: metrics/*.json - if-no-files-found: ignore + caller-name: ${{ github.workflow }} + matrix-identifier: ${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }} From d8ea0485c80133ba8dbc0ceb2befd138b73a63a2 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 17:57:28 +0100 Subject: [PATCH 16/41] Add reporting action --- .github/workflows/test-matrix-entry.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index dc9818c..259967a 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -58,7 +58,7 @@ jobs: steps: - name: Common setup - uses: a-sit-plus/internal-workflows/.github/actions/runner-setup@feature/modularTests + uses: a-sit-plus/internal-workflows/.github/actions/common-setup@feature/modularTests with: xcode-version: ${{ inputs.xcode-version }} enable-kvm: ${{ inputs.enable-kvm }} @@ -69,7 +69,7 @@ jobs: run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ inputs.testArgs }} - name: Reporting - uses: a-sit-plus/internal-workflows/.github/actions/reporting@feature/modularTests + uses: a-sit-plus/internal-workflows/.github/actions/common-reporting@feature/modularTests with: caller-name: ${{ github.workflow }} matrix-identifier: ${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }} From 0c8ff74fa67be8d31e81016f829a45bfeaae2034 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 18:12:41 +0100 Subject: [PATCH 17/41] Update build workflows --- .github/workflows/build-everything.yml | 5 +++++ .github/workflows/build-matrix-entry.yml | 21 +++++++-------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 2bc2a89..95292af 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -17,6 +17,10 @@ on: description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' required: true type: string + override-cache: + required: false + default: false + type: boolean jobs: prepare-matrix: @@ -34,3 +38,4 @@ jobs: module: ${{ matrix.module }} kotlin-version: ${{ inputs.kotlinVersion }} testballoon-version: ${{ inputs.testballoonVersion }} + override-cache: ${{ inputs.override-cache }} diff --git a/.github/workflows/build-matrix-entry.yml b/.github/workflows/build-matrix-entry.yml index 3a632a4..cbf2ed2 100644 --- a/.github/workflows/build-matrix-entry.yml +++ b/.github/workflows/build-matrix-entry.yml @@ -17,6 +17,10 @@ on: required: false default: "" type: string + override-cache: + required: false + default: false + type: boolean jobs: build: @@ -28,21 +32,10 @@ jobs: TESTBALLOON_VERSION_OVERRIDE: ${{ inputs.testballoon-version }} steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: temurin - java-version: "17" - - - name: Setup Gradle # Gradle-native cache handling - uses: gradle/actions/setup-gradle@v5 + - name: Common setup + uses: a-sit-plus/internal-workflows/.github/actions/common-setup@feature/modularTests with: - cache-read-only: true + override-cache: ${{ inputs.override-cache }} - name: Build jar run: ./gradlew assemble From 918620f52353e74131514a3bdc5bc7b4eda6d8ee Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Thu, 8 Jan 2026 18:13:55 +0100 Subject: [PATCH 18/41] Fix var name --- .github/actions/common-reporting/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/common-reporting/action.yml b/.github/actions/common-reporting/action.yml index d217203..c65e052 100644 --- a/.github/actions/common-reporting/action.yml +++ b/.github/actions/common-reporting/action.yml @@ -25,7 +25,7 @@ runs: env: NODE_OPTIONS: --max-old-space-size=8192 with: - name: ${{ inputs.caller-name }}-${{ inputs.name }} + name: ${{ inputs.report-name }}-${{ inputs.name }} path: ${{ inputs.report-path }} list-suites: failed list-tests: failed From b8c93b48c3e0f9ac7dbee2777e359200e27841c3 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 14:58:48 +0100 Subject: [PATCH 19/41] Add modular build xc --- .github/actions/common-setup/action.yml | 13 ++--- .github/workflows/build-everything.yml | 27 ++++++---- ...x-entry.yml => build-jar-matrix-entry.yml} | 6 --- .github/workflows/build-xc-matrix-entry.yml | 54 +++++++++++++++++++ .github/workflows/test-everything.yml | 1 - .github/workflows/test-matrix-entry.yml | 17 ++---- 6 files changed, 79 insertions(+), 39 deletions(-) rename .github/workflows/{build-matrix-entry.yml => build-jar-matrix-entry.yml} (87%) create mode 100644 .github/workflows/build-xc-matrix-entry.yml diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index d116df0..715f3ef 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -2,17 +2,14 @@ name: Common CI Setup description: Checkout + Java + optional Xcode + optional KVM inputs: - xcode-version: - description: Xcode version (macos only). Empty to skip. + override-cache: + description: 'Override Cache?' required: false - default: "" + default: "false" enable-kvm: description: Enable KVM for Android emulator tests required: false default: "false" # composite inputs are strings - override-cache: - description: 'Override Cache?' - required: true runs: using: "composite" @@ -29,10 +26,10 @@ runs: java-version: "17" - name: Setup Xcode - if: ${{ inputs.xcode-version != '' }} + if: runner.os == 'macOS' uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: ${{ inputs.xcode-version }} + xcode-version: "16.2.0" - name: Enable KVM if: ${{ inputs.enable-kvm == 'true' }} diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 95292af..64debeb 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -3,6 +3,10 @@ name: build on: workflow_call: inputs: + matrix-file-name: + description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' + required: true + type: string kotlin-version: description: 'Override Kotlin version?' required: false @@ -13,14 +17,6 @@ on: required: false default: '' type: string - matrix-file-name: - description: 'Json File containing arbitrary strategy-matrix; MUST be inside repository ./github folder' - required: true - type: string - override-cache: - required: false - default: false - type: boolean jobs: prepare-matrix: @@ -28,7 +24,18 @@ jobs: with: file-name: ${{ inputs.matrix-file-name }} - build: + build-jar: + needs: prepare-matrix + strategy: + fail-fast: false + matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} + uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests + with: + module: ${{ matrix.module }} + kotlin-version: ${{ inputs.kotlinVersion }} + testballoon-version: ${{ inputs.testballoonVersion }} + + build-xc: needs: prepare-matrix strategy: fail-fast: false @@ -36,6 +43,6 @@ jobs: uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests with: module: ${{ matrix.module }} + artifact-name: ${{ matrix.artifactName }} kotlin-version: ${{ inputs.kotlinVersion }} testballoon-version: ${{ inputs.testballoonVersion }} - override-cache: ${{ inputs.override-cache }} diff --git a/.github/workflows/build-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml similarity index 87% rename from .github/workflows/build-matrix-entry.yml rename to .github/workflows/build-jar-matrix-entry.yml index cbf2ed2..98cbf0b 100644 --- a/.github/workflows/build-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -17,10 +17,6 @@ on: required: false default: "" type: string - override-cache: - required: false - default: false - type: boolean jobs: build: @@ -34,8 +30,6 @@ jobs: steps: - name: Common setup uses: a-sit-plus/internal-workflows/.github/actions/common-setup@feature/modularTests - with: - override-cache: ${{ inputs.override-cache }} - name: Build jar run: ./gradlew assemble diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml new file mode 100644 index 0000000..51b5d2f --- /dev/null +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -0,0 +1,54 @@ +name: Build XCFramework Matrix Entry + +on: + workflow_call: + inputs: + module: + required: true + type: string + artifact-name: + required: true + type: string + kotlin-version: + description: "Override Kotlin version?" + required: false + default: "" + type: string + testballoon-version: + description: "Override TestBalloon version (full version string)?" + required: false + default: "" + type: string + +jobs: + build: + runs-on: macos-latest + timeout-minutes: 120 + + env: + KOTLIN_VERSION_ENV: ${{ inputs.kotlin-version }} + TESTBALLOON_VERSION_OVERRIDE: ${{ inputs.testballoon-version }} + + steps: + - name: Common setup + uses: a-sit-plus/internal-workflows/.github/actions/common-setup@feature/modularTests + + - name: Build klibs + run: ./gradlew iosArm64MainKlibrary iosX64MainKlibrary + + - name: Build XCFramework + run: ./gradlew assemble${{ inputs.artifact-name }}XCFramework + + - name: Upload debug XCFramework + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.artifact-name }}-debug.xcframework + path: ${{ inputs.name }}/build/XCFrameworks/debug/ + if-no-files-found: error + + - name: Upload release XCFramework + uses: actions/upload-artifact@v4 + with: + name: ${{ inputs.artifact-name }}-release.xcframework + path: ${{ inputs.name }}/build/XCFrameworks/release/ + if-no-files-found: error diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index b60e234..9d7d1bc 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -38,7 +38,6 @@ jobs: override-cache: ${{ inputs.override-cache }} os: ${{ matrix.os }} name: ${{ matrix.name }} - arch: ${{ matrix.arch }} testArgs: ${{ matrix.testArgs }} enable-kvm: ${{ matrix.enableKvm || false }} xcode-version: ${{ matrix.xcodeVersion || '' }} diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 259967a..07a631a 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -17,11 +17,6 @@ on: (for example: jvm, native, android, ios)' required: true type: string - arch: - description: 'Target architecture for this test run - (for example: x64, arm64)' - required: true - type: string testArgs: description: 'Gradle command-line arguments specifying which tests to run' required: true @@ -31,11 +26,6 @@ on: required: false default: false type: boolean - xcode-version: - description: 'Xcode version for Apple platform tests (macos runners only)' - required: false - default: '' - type: string kotlin-version: description: 'Override Kotlin version?' required: false @@ -60,9 +50,8 @@ jobs: - name: Common setup uses: a-sit-plus/internal-workflows/.github/actions/common-setup@feature/modularTests with: - xcode-version: ${{ inputs.xcode-version }} - enable-kvm: ${{ inputs.enable-kvm }} override-cache: ${{ inputs.override-cache }} + enable-kvm: ${{ inputs.enable-kvm }} - name: Run tests shell: 'bash' @@ -71,5 +60,5 @@ jobs: - name: Reporting uses: a-sit-plus/internal-workflows/.github/actions/common-reporting@feature/modularTests with: - caller-name: ${{ github.workflow }} - matrix-identifier: ${{ inputs.os }}-${{ inputs.name }}-${{ inputs.arch }} + report-name: ${{ github.workflow }} + matrix-identifier: ${{ runner.os }}-${{ inputs.name }}-${{ runner.arch }} From ca757cf9f8d86847fe0af7248649c34494f35988 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:10:45 +0100 Subject: [PATCH 20/41] Add modular build xc --- .github/workflows/build-jar-matrix-entry.yml | 3 ++- .github/workflows/build-xc-matrix-entry.yml | 1 + .github/workflows/test-matrix-entry.yml | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-jar-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml index 98cbf0b..5d333fc 100644 --- a/.github/workflows/build-jar-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -20,7 +20,8 @@ on: jobs: build: - runs-on: macos-latest + name: "ubuntu-latest" / ${{ inputs.module }} + runs-on: ubuntu-latest timeout-minutes: 120 env: diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml index 51b5d2f..0243491 100644 --- a/.github/workflows/build-xc-matrix-entry.yml +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -22,6 +22,7 @@ on: jobs: build: + name: "macos-latest" / ${{ inputs.module }} runs-on: macos-latest timeout-minutes: 120 diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index 07a631a..b53a478 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -39,6 +39,7 @@ on: jobs: test: + name: ${{ inputs.os }} / ${{ inputs.name }} runs-on: ${{ inputs.os }} timeout-minutes: 300 From 67d54d15d658adb3f45f1120075b4fd9c7df85b6 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:15:14 +0100 Subject: [PATCH 21/41] Add modular build xc --- .github/workflows/test-everything.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 9d7d1bc..ed4c2c1 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -40,6 +40,5 @@ jobs: name: ${{ matrix.name }} testArgs: ${{ matrix.testArgs }} enable-kvm: ${{ matrix.enableKvm || false }} - xcode-version: ${{ matrix.xcodeVersion || '' }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} \ No newline at end of file From aea3312c4a41550730300c812217b836236a83f3 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:26:58 +0100 Subject: [PATCH 22/41] Add modular build xc --- .github/workflows/test-everything.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index ed4c2c1..2b8c80b 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -32,6 +32,7 @@ jobs: run-tests: needs: prepare-matrix strategy: + fail-fast: false matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} uses: a-sit-plus/internal-workflows/.github/workflows/test-matrix-entry.yml@feature/modularTests with: From b08fbd102f1cd8a0875c653f7fc291715e19ce6e Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:29:27 +0100 Subject: [PATCH 23/41] Add modular build xc --- .github/workflows/build-everything.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 64debeb..5c1a3d6 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -29,7 +29,7 @@ jobs: strategy: fail-fast: false matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} - uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests + uses: a-sit-plus/internal-workflows/.github/workflows/build-jar-matrix-entry.yml@feature/modularTests with: module: ${{ matrix.module }} kotlin-version: ${{ inputs.kotlinVersion }} @@ -40,7 +40,7 @@ jobs: strategy: fail-fast: false matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }} - uses: a-sit-plus/internal-workflows/.github/workflows/build-matrix-entry.yml@feature/modularTests + uses: a-sit-plus/internal-workflows/.github/workflows/build-xc-matrix-entry.yml@feature/modularTests with: module: ${{ matrix.module }} artifact-name: ${{ matrix.artifactName }} From 54732e0c9527434a8bd613ff263bb825d0b3320c Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:33:45 +0100 Subject: [PATCH 24/41] Add modular build xc --- .github/workflows/build-jar-matrix-entry.yml | 2 +- .github/workflows/build-xc-matrix-entry.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-jar-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml index 5d333fc..910aeb4 100644 --- a/.github/workflows/build-jar-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -20,7 +20,7 @@ on: jobs: build: - name: "ubuntu-latest" / ${{ inputs.module }} + name: "ubuntu-latest / ${{ inputs.module }}" runs-on: ubuntu-latest timeout-minutes: 120 diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml index 0243491..7ef7f26 100644 --- a/.github/workflows/build-xc-matrix-entry.yml +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -22,7 +22,7 @@ on: jobs: build: - name: "macos-latest" / ${{ inputs.module }} + name: "macos-latest / ${{ inputs.module }}" runs-on: macos-latest timeout-minutes: 120 From cbdeeddb6baab1ef19d4cd50a4da234a85f2a159 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:40:10 +0100 Subject: [PATCH 25/41] Improve workflow naming --- .github/workflows/build-everything.yml | 3 +++ .github/workflows/build-jar-matrix-entry.yml | 2 +- .github/workflows/build-xc-matrix-entry.yml | 2 +- .github/workflows/prepare-matrix.yml | 1 + .github/workflows/test-everything.yml | 4 +++- .github/workflows/test-matrix-entry.yml | 2 +- 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 5c1a3d6..0a17873 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -20,11 +20,13 @@ on: jobs: prepare-matrix: + name: Matrix uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} build-jar: + name: JAR ${{ matrix.module }} needs: prepare-matrix strategy: fail-fast: false @@ -36,6 +38,7 @@ jobs: testballoon-version: ${{ inputs.testballoonVersion }} build-xc: + name: XC ${{ matrix.module }} needs: prepare-matrix strategy: fail-fast: false diff --git a/.github/workflows/build-jar-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml index 910aeb4..580835a 100644 --- a/.github/workflows/build-jar-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -20,7 +20,7 @@ on: jobs: build: - name: "ubuntu-latest / ${{ inputs.module }}" + name: "JAR ${{ inputs.module }}" runs-on: ubuntu-latest timeout-minutes: 120 diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml index 7ef7f26..bbb6c02 100644 --- a/.github/workflows/build-xc-matrix-entry.yml +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -22,7 +22,7 @@ on: jobs: build: - name: "macos-latest / ${{ inputs.module }}" + name: "XC ${{ inputs.module }}" runs-on: macos-latest timeout-minutes: 120 diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 505991b..5deb175 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -14,6 +14,7 @@ on: jobs: prepare: + name: Matrix runs-on: ubuntu-latest outputs: matrix: ${{ steps.load.outputs.matrix }} diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 2b8c80b..a07f8d7 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -25,11 +25,13 @@ on: jobs: prepare-matrix: + name: Matrix uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} run-tests: + name: Test ${{ matrix.name }}@${{ matrix.os }} needs: prepare-matrix strategy: fail-fast: false @@ -42,4 +44,4 @@ jobs: testArgs: ${{ matrix.testArgs }} enable-kvm: ${{ matrix.enableKvm || false }} kotlin-version: ${{ inputs.kotlin-version }} - testballoon-version: ${{ inputs.testballoon-version }} \ No newline at end of file + testballoon-version: ${{ inputs.testballoon-version }} diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index b53a478..b95f0f6 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -39,7 +39,7 @@ on: jobs: test: - name: ${{ inputs.os }} / ${{ inputs.name }} + name: Test ${{ inputs.name }}@${{ inputs.os }} runs-on: ${{ inputs.os }} timeout-minutes: 300 From 3a3f587431f7de9a3324fb1be2fa7d049dc88881 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:53:15 +0100 Subject: [PATCH 26/41] Fix variable name --- .github/actions/common-reporting/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/common-reporting/action.yml b/.github/actions/common-reporting/action.yml index c65e052..f3a0800 100644 --- a/.github/actions/common-reporting/action.yml +++ b/.github/actions/common-reporting/action.yml @@ -25,7 +25,7 @@ runs: env: NODE_OPTIONS: --max-old-space-size=8192 with: - name: ${{ inputs.report-name }}-${{ inputs.name }} + name: ${{ inputs.report-name }}-${{ inputs.matrix-identifier }} path: ${{ inputs.report-path }} list-suites: failed list-tests: failed @@ -35,6 +35,6 @@ runs: - name: Upload metrics uses: actions/upload-artifact@v4 with: - name: metrics-${{ inputs.name }} + name: metrics-${{ inputs.matrix-identifier }} path: ${{ inputs.metrics-path }} if-no-files-found: ignore From 3b308b6682ab64ee28e33fa2f11783ecc6d38e90 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 19 Jan 2026 15:56:46 +0100 Subject: [PATCH 27/41] Improve workflow naming --- .github/workflows/build-everything.yml | 8 ++++---- .github/workflows/build-jar-matrix-entry.yml | 4 ++-- .github/workflows/build-xc-matrix-entry.yml | 4 ++-- .github/workflows/prepare-matrix.yml | 4 ++-- .github/workflows/test-everything.yml | 6 +++--- .github/workflows/test-matrix-entry.yml | 4 ++-- 6 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 0a17873..151e31a 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -1,4 +1,4 @@ -name: build +name: Build - Everything on: workflow_call: @@ -20,13 +20,13 @@ on: jobs: prepare-matrix: - name: Matrix + name: Prepare build matrix uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} build-jar: - name: JAR ${{ matrix.module }} + name: Build JAR - ${{ matrix.module }} needs: prepare-matrix strategy: fail-fast: false @@ -38,7 +38,7 @@ jobs: testballoon-version: ${{ inputs.testballoonVersion }} build-xc: - name: XC ${{ matrix.module }} + name: Build XCFramework - ${{ matrix.module }} needs: prepare-matrix strategy: fail-fast: false diff --git a/.github/workflows/build-jar-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml index 580835a..0c2ad96 100644 --- a/.github/workflows/build-jar-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -1,4 +1,4 @@ -name: Build Matrix Entry +name: Build - JAR Matrix Entry on: workflow_call: @@ -20,7 +20,7 @@ on: jobs: build: - name: "JAR ${{ inputs.module }}" + name: "Build JAR (ubuntu-latest) - ${{ inputs.module }}" runs-on: ubuntu-latest timeout-minutes: 120 diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml index bbb6c02..847efe0 100644 --- a/.github/workflows/build-xc-matrix-entry.yml +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -1,4 +1,4 @@ -name: Build XCFramework Matrix Entry +name: Build - XCFramework Matrix Entry on: workflow_call: @@ -22,7 +22,7 @@ on: jobs: build: - name: "XC ${{ inputs.module }}" + name: "Build XCFramework (macos-latest) - ${{ inputs.module }}" runs-on: macos-latest timeout-minutes: 120 diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 5deb175..36080ab 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -1,4 +1,4 @@ -name: Prepare Test Matrix +name: Matrix - Prepare on: workflow_call: @@ -14,7 +14,7 @@ on: jobs: prepare: - name: Matrix + name: Generate matrix JSON runs-on: ubuntu-latest outputs: matrix: ${{ steps.load.outputs.matrix }} diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index a07f8d7..b0ad33d 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -1,4 +1,4 @@ -name: Test Everything (All OS/Arch) +name: Test - Everything on: workflow_call: @@ -25,13 +25,13 @@ on: jobs: prepare-matrix: - name: Matrix + name: Prepare test matrix uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} run-tests: - name: Test ${{ matrix.name }}@${{ matrix.os }} + name: Run tests - ${{ matrix.name }} on ${{ matrix.os }} needs: prepare-matrix strategy: fail-fast: false diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index b95f0f6..b8efaf4 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -1,4 +1,4 @@ -name: Run inputs tests +name: Test - Matrix Entry on: workflow_call: @@ -39,7 +39,7 @@ on: jobs: test: - name: Test ${{ inputs.name }}@${{ inputs.os }} + name: Test - ${{ inputs.name }} on ${{ inputs.os }} runs-on: ${{ inputs.os }} timeout-minutes: 300 From cd321c1c380590d73b03b0fc1595f71ef701cf3a Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 14:49:04 +0100 Subject: [PATCH 28/41] Update actions --- .github/actions/common-reporting/action.yml | 2 +- .github/actions/common-setup/action.yml | 4 ++-- .github/workflows/build-jar-matrix-entry.yml | 2 +- .github/workflows/build-xc-matrix-entry.yml | 4 ++-- .github/workflows/cla.yml | 2 +- .github/workflows/prepare-matrix.yml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/actions/common-reporting/action.yml b/.github/actions/common-reporting/action.yml index f3a0800..62a3ef6 100644 --- a/.github/actions/common-reporting/action.yml +++ b/.github/actions/common-reporting/action.yml @@ -33,7 +33,7 @@ runs: use-actions-summary: true - name: Upload metrics - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: metrics-${{ inputs.matrix-identifier }} path: ${{ inputs.metrics-path }} diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index 715f3ef..df5c125 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -15,12 +15,12 @@ runs: using: "composite" steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: submodules: recursive - name: Setup Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: temurin java-version: "17" diff --git a/.github/workflows/build-jar-matrix-entry.yml b/.github/workflows/build-jar-matrix-entry.yml index 0c2ad96..75ebf2f 100644 --- a/.github/workflows/build-jar-matrix-entry.yml +++ b/.github/workflows/build-jar-matrix-entry.yml @@ -36,7 +36,7 @@ jobs: run: ./gradlew assemble - name: Upload jar ${{ inputs.module }} - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ inputs.module }} path: ${{ inputs.module }}/build/libs/*.jar diff --git a/.github/workflows/build-xc-matrix-entry.yml b/.github/workflows/build-xc-matrix-entry.yml index 847efe0..22f78c8 100644 --- a/.github/workflows/build-xc-matrix-entry.yml +++ b/.github/workflows/build-xc-matrix-entry.yml @@ -41,14 +41,14 @@ jobs: run: ./gradlew assemble${{ inputs.artifact-name }}XCFramework - name: Upload debug XCFramework - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ inputs.artifact-name }}-debug.xcframework path: ${{ inputs.name }}/build/XCFrameworks/debug/ if-no-files-found: error - name: Upload release XCFramework - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ inputs.artifact-name }}-release.xcframework path: ${{ inputs.name }}/build/XCFrameworks/release/ diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 41c9923..43b9642 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -6,7 +6,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4.1.7 + uses: actions/checkout@v6 - name: Parse Extracted Authors env: diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 36080ab..1d6c8a9 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -20,7 +20,7 @@ jobs: matrix: ${{ steps.load.outputs.matrix }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Load matrix.json id: load From c29e7739287b9ca8e0228b2b94d6046536554651 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 14:52:02 +0100 Subject: [PATCH 29/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 74 +++++++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 .github/workflows/test-manually.yml diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml new file mode 100644 index 0000000..52fb17b --- /dev/null +++ b/.github/workflows/test-manually.yml @@ -0,0 +1,74 @@ +name: Test Manually (Matrix Entry) + +on: + workflow_dispatch: + inputs: + matrix-path: + description: "Path to json which contains the test strategy matrix" + required: true + default: ".github/config/test-strategy-matrix.json" + type: string + entry-name: + description: "Runner as defined in matrix (e.g., iosRunner, appleOtherRunner, jvmRunner)" + required: true + default: "jvmRunner" + type: string + kotlin-version: + description: "Override Kotlin version?" + required: false + default: "" + type: string + testballoon-version: + description: "Override TestBalloon version (full version string)?" + required: false + default: "" + type: string + +jobs: + select-entry: + runs-on: ubuntu-latest + outputs: + os: ${{ steps.pick.outputs.os }} + arch: ${{ steps.pick.outputs.arch }} + testArgs: ${{ steps.pick.outputs.testArgs }} + enableKvm: ${{ steps.pick.outputs.enableKvm }} + xcodeVersion: ${{ steps.pick.outputs.xcodeVersion }} + steps: + - uses: actions/checkout@v6 + - id: pick + uses: actions/github-script@v7 + env: + ENTRY_NAME: ${{ inputs.entry-name }} + with: + script: | + const fs = require('fs'); + const entryName = process.env.ENTRY_NAME; + if (!entryName) { + core.setFailed('Missing entry-name input'); + return; + } + const matrix = JSON.parse(fs.readFileSync('.github/test-strategy-matrix.json', 'utf8')); + const entry = (matrix.include || []).find(e => e.name === entryName); + if (!entry) { + core.setFailed(`No matrix entry named "${entryName}"`); + return; + } + core.setOutput('os', entry.os || ''); + core.setOutput('arch', entry.arch || ''); + core.setOutput('testArgs', entry.testArgs || ''); + core.setOutput('enableKvm', entry.enableKvm ? 'true' : 'false'); + core.setOutput('xcodeVersion', entry.xcodeVersion || ''); + + test: + needs: select-entry + uses: a-sit-plus/internal-workflows/.github/workflows/config/test-matrix-entry.yml@feature/modularTests + with: + override-cache: ${{ github.ref_name == 'development' || github.ref_name == 'main' }} + os: ${{ needs.select-entry.outputs.os }} + name: ${{ inputs.entry-name }} + arch: ${{ needs.select-entry.outputs.arch }} + testArgs: ${{ needs.select-entry.outputs.testArgs }} + enable-kvm: ${{ needs.select-entry.outputs.enableKvm == 'true' }} + xcode-version: ${{ needs.select-entry.outputs.xcodeVersion }} + kotlin-version: ${{ inputs.kotlin-version }} + testballoon-version: ${{ inputs.testballoon-version }} From 1852f4c3584d5ebbc2763872c0489c8c21cca789 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 14:52:08 +0100 Subject: [PATCH 30/41] Update actions --- .github/workflows/guard-main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/guard-main.yml b/.github/workflows/guard-main.yml index fce24d1..df211ed 100644 --- a/.github/workflows/guard-main.yml +++ b/.github/workflows/guard-main.yml @@ -7,7 +7,7 @@ jobs: if: github.head_ref != '${{ vars.DEV_BRANCH }}' runs-on: 'ubuntu-latest' steps: - - uses: 'actions/github-script@v6' + - uses: 'actions/github-script@v7' with: script: | try { From 57c522209681627a88fe4e29cf01e0398fdd958a Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 14:54:48 +0100 Subject: [PATCH 31/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index 52fb17b..62527a8 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -1,7 +1,7 @@ name: Test Manually (Matrix Entry) on: - workflow_dispatch: + workflow_call: inputs: matrix-path: description: "Path to json which contains the test strategy matrix" From 5eabf248833495a23d4c331b07d9e96706cafa58 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 14:58:46 +0100 Subject: [PATCH 32/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index 62527a8..e241dbf 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -13,6 +13,10 @@ on: required: true default: "jvmRunner" type: string + override-cache: + required: false + default: false + type: boolean kotlin-version: description: "Override Kotlin version?" required: false @@ -29,7 +33,6 @@ jobs: runs-on: ubuntu-latest outputs: os: ${{ steps.pick.outputs.os }} - arch: ${{ steps.pick.outputs.arch }} testArgs: ${{ steps.pick.outputs.testArgs }} enableKvm: ${{ steps.pick.outputs.enableKvm }} xcodeVersion: ${{ steps.pick.outputs.xcodeVersion }} @@ -47,14 +50,13 @@ jobs: core.setFailed('Missing entry-name input'); return; } - const matrix = JSON.parse(fs.readFileSync('.github/test-strategy-matrix.json', 'utf8')); + const matrix = JSON.parse(fs.readFileSync('${{ inputs.matrix-path }}', 'utf8')); const entry = (matrix.include || []).find(e => e.name === entryName); if (!entry) { core.setFailed(`No matrix entry named "${entryName}"`); return; } core.setOutput('os', entry.os || ''); - core.setOutput('arch', entry.arch || ''); core.setOutput('testArgs', entry.testArgs || ''); core.setOutput('enableKvm', entry.enableKvm ? 'true' : 'false'); core.setOutput('xcodeVersion', entry.xcodeVersion || ''); @@ -63,12 +65,10 @@ jobs: needs: select-entry uses: a-sit-plus/internal-workflows/.github/workflows/config/test-matrix-entry.yml@feature/modularTests with: - override-cache: ${{ github.ref_name == 'development' || github.ref_name == 'main' }} + override-cache: ${{ inputs.override-cache }} os: ${{ needs.select-entry.outputs.os }} name: ${{ inputs.entry-name }} - arch: ${{ needs.select-entry.outputs.arch }} testArgs: ${{ needs.select-entry.outputs.testArgs }} enable-kvm: ${{ needs.select-entry.outputs.enableKvm == 'true' }} - xcode-version: ${{ needs.select-entry.outputs.xcodeVersion }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} From 28e3e84daf75eef776bb500124e98b36dfbf6d60 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 15:03:24 +0100 Subject: [PATCH 33/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index e241dbf..105c7b0 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -8,7 +8,7 @@ on: required: true default: ".github/config/test-strategy-matrix.json" type: string - entry-name: + runner-name: description: "Runner as defined in matrix (e.g., iosRunner, appleOtherRunner, jvmRunner)" required: true default: "jvmRunner" @@ -41,13 +41,13 @@ jobs: - id: pick uses: actions/github-script@v7 env: - ENTRY_NAME: ${{ inputs.entry-name }} + ENTRY_NAME: ${{ inputs.runner-name }} with: script: | const fs = require('fs'); const entryName = process.env.ENTRY_NAME; if (!entryName) { - core.setFailed('Missing entry-name input'); + core.setFailed('Missing runner-name input'); return; } const matrix = JSON.parse(fs.readFileSync('${{ inputs.matrix-path }}', 'utf8')); @@ -67,7 +67,7 @@ jobs: with: override-cache: ${{ inputs.override-cache }} os: ${{ needs.select-entry.outputs.os }} - name: ${{ inputs.entry-name }} + name: ${{ inputs.runner-name }} testArgs: ${{ needs.select-entry.outputs.testArgs }} enable-kvm: ${{ needs.select-entry.outputs.enableKvm == 'true' }} kotlin-version: ${{ inputs.kotlin-version }} From 5f78cde1ae659083b327f214f3f1061e941e76e4 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 15:06:15 +0100 Subject: [PATCH 34/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index 105c7b0..8019d09 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -35,7 +35,6 @@ jobs: os: ${{ steps.pick.outputs.os }} testArgs: ${{ steps.pick.outputs.testArgs }} enableKvm: ${{ steps.pick.outputs.enableKvm }} - xcodeVersion: ${{ steps.pick.outputs.xcodeVersion }} steps: - uses: actions/checkout@v6 - id: pick @@ -59,7 +58,6 @@ jobs: core.setOutput('os', entry.os || ''); core.setOutput('testArgs', entry.testArgs || ''); core.setOutput('enableKvm', entry.enableKvm ? 'true' : 'false'); - core.setOutput('xcodeVersion', entry.xcodeVersion || ''); test: needs: select-entry From 0be3adb6f799c8f0e723239da0af77d4c97ceb41 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 15:15:59 +0100 Subject: [PATCH 35/41] Add test-manually.yml --- .github/workflows/test-manually.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index 8019d09..54ad5b0 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -61,7 +61,7 @@ jobs: test: needs: select-entry - uses: a-sit-plus/internal-workflows/.github/workflows/config/test-matrix-entry.yml@feature/modularTests + uses: a-sit-plus/internal-workflows/.github/workflows/test-matrix-entry.yml@feature/modularTests with: override-cache: ${{ inputs.override-cache }} os: ${{ needs.select-entry.outputs.os }} From 1443a8cffcbd1ed362b36c9246c18c8a036a09b5 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Wed, 21 Jan 2026 16:37:39 +0100 Subject: [PATCH 36/41] Bump xcode version to 16.4.0 --- .github/actions/common-setup/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index df5c125..2e132eb 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -29,7 +29,7 @@ runs: if: runner.os == 'macOS' uses: maxim-lobanov/setup-xcode@v1 with: - xcode-version: "16.2.0" + xcode-version: "16.4.0" - name: Enable KVM if: ${{ inputs.enable-kvm == 'true' }} From e8f95467d0ed335c32c3cadc49872a53ddb85790 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Wed, 25 Feb 2026 10:37:40 +0100 Subject: [PATCH 37/41] Refactor test command and add report/metrics paths --- .github/workflows/test-matrix-entry.yml | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index b8efaf4..f41e5b7 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -17,7 +17,7 @@ on: (for example: jvm, native, android, ios)' required: true type: string - testArgs: + testCommand: description: 'Gradle command-line arguments specifying which tests to run' required: true type: string @@ -36,6 +36,16 @@ on: required: false default: '' type: string + report-path: + description: Glob for test result XML files + type: string + required: false + default: "**/build/test-results/**/TEST*.xml,**/build/outputs/androidTest-results/managedDevice/**/TEST*.xml" + metrics-path: + description: Glob for metrics JSON files + required: false + type: string + default: "metrics/*.json" jobs: test: @@ -56,10 +66,14 @@ jobs: - name: Run tests shell: 'bash' - run: ./gradlew -Dkotlin.build.report.json.directory="$PWD/metrics" ${{ inputs.testArgs }} + run: | + export GRADLE_OPTS="-Dkotlin.build.report.json.directory=$PWD/metrics" + ${{ inputs.testCommand }} - name: Reporting uses: a-sit-plus/internal-workflows/.github/actions/common-reporting@feature/modularTests with: report-name: ${{ github.workflow }} matrix-identifier: ${{ runner.os }}-${{ inputs.name }}-${{ runner.arch }} + report-path: ${{ inputs.report-path }} + metrics-path: ${{ inputs.metrics-path }} From b2da0b0c1215f4ecaa49ca04488f240323b7879a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Wed, 25 Feb 2026 10:49:15 +0100 Subject: [PATCH 38/41] test command --- .github/workflows/test-everything.yml | 2 +- .github/workflows/test-manually.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index b0ad33d..f1b7838 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -41,7 +41,7 @@ jobs: override-cache: ${{ inputs.override-cache }} os: ${{ matrix.os }} name: ${{ matrix.name }} - testArgs: ${{ matrix.testArgs }} + testCommand: ${{ matrix.testCommand }} enable-kvm: ${{ matrix.enableKvm || false }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} diff --git a/.github/workflows/test-manually.yml b/.github/workflows/test-manually.yml index 54ad5b0..2d482a7 100644 --- a/.github/workflows/test-manually.yml +++ b/.github/workflows/test-manually.yml @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest outputs: os: ${{ steps.pick.outputs.os }} - testArgs: ${{ steps.pick.outputs.testArgs }} + testCommand: ${{ steps.pick.outputs.testCommand }} enableKvm: ${{ steps.pick.outputs.enableKvm }} steps: - uses: actions/checkout@v6 @@ -56,7 +56,7 @@ jobs: return; } core.setOutput('os', entry.os || ''); - core.setOutput('testArgs', entry.testArgs || ''); + core.setOutput('testCommand', entry.testCommand || ''); core.setOutput('enableKvm', entry.enableKvm ? 'true' : 'false'); test: @@ -66,7 +66,7 @@ jobs: override-cache: ${{ inputs.override-cache }} os: ${{ needs.select-entry.outputs.os }} name: ${{ inputs.runner-name }} - testArgs: ${{ needs.select-entry.outputs.testArgs }} + testCommand: ${{ needs.select-entry.outputs.testCommand }} enable-kvm: ${{ needs.select-entry.outputs.enableKvm == 'true' }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} From 4f176c99f548873180d88900aba26667462009b3 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 2 Mar 2026 10:56:12 +0100 Subject: [PATCH 39/41] Allow custom matrix runner --- .github/workflows/build-everything.yml | 6 ++++++ .github/workflows/prepare-matrix.yml | 7 ++++++- .github/workflows/test-everything.yml | 6 ++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 151e31a..06f70bc 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -17,6 +17,11 @@ on: required: false default: '' type: string + build-matrix-runner: + description: 'Name of target runner to parse build matrix; defaults to ubuntu-latest' + required: true + type: string + default: 'ubuntu-latest' jobs: prepare-matrix: @@ -24,6 +29,7 @@ jobs: uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} + runner: ${{ inputs.build-matrix-runner }} build-jar: name: Build JAR - ${{ matrix.module }} diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 1d6c8a9..0e69a33 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -7,6 +7,11 @@ on: description: 'Json File containing arbitrary strategy-matrix' required: true type: string + runner: + description: 'Name of target runner; defaults to ubuntu-latest' + required: true + type: string + default: 'ubuntu-latest' outputs: matrix: description: 'JSON matrix to be used by caller' @@ -15,7 +20,7 @@ on: jobs: prepare: name: Generate matrix JSON - runs-on: ubuntu-latest + runs-on: ${{ inputs.runner }} outputs: matrix: ${{ steps.load.outputs.matrix }} steps: diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index f1b7838..84b1a8c 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -22,6 +22,11 @@ on: description: 'Json File containing arbitrary strategy-matrix' required: true type: string + test-matrix-runner: + description: 'Name of target runner to parse test matrix; defaults to ubuntu-latest' + required: true + type: string + default: 'ubuntu-latest' jobs: prepare-matrix: @@ -29,6 +34,7 @@ jobs: uses: a-sit-plus/internal-workflows/.github/workflows/prepare-matrix.yml@feature/modularTests with: file-name: ${{ inputs.matrix-file-name }} + runner: ${{ inputs.test-matrix-runner }} run-tests: name: Run tests - ${{ matrix.name }} on ${{ matrix.os }} From 9992bf956143fee301a660140482807e75c17c01 Mon Sep 17 00:00:00 2001 From: Simon Mueller Date: Mon, 2 Mar 2026 12:35:59 +0100 Subject: [PATCH 40/41] Fix workflow param requirement --- .github/workflows/build-everything.yml | 2 +- .github/workflows/prepare-matrix.yml | 2 +- .github/workflows/test-everything.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-everything.yml b/.github/workflows/build-everything.yml index 06f70bc..5da49ed 100644 --- a/.github/workflows/build-everything.yml +++ b/.github/workflows/build-everything.yml @@ -19,7 +19,7 @@ on: type: string build-matrix-runner: description: 'Name of target runner to parse build matrix; defaults to ubuntu-latest' - required: true + required: false type: string default: 'ubuntu-latest' diff --git a/.github/workflows/prepare-matrix.yml b/.github/workflows/prepare-matrix.yml index 0e69a33..1535ca1 100644 --- a/.github/workflows/prepare-matrix.yml +++ b/.github/workflows/prepare-matrix.yml @@ -9,7 +9,7 @@ on: type: string runner: description: 'Name of target runner; defaults to ubuntu-latest' - required: true + required: false type: string default: 'ubuntu-latest' outputs: diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 84b1a8c..7deb6d6 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -24,7 +24,7 @@ on: type: string test-matrix-runner: description: 'Name of target runner to parse test matrix; defaults to ubuntu-latest' - required: true + required: false type: string default: 'ubuntu-latest' From 84c2e0da1cf3aff7be762bf9daa0bb51efceae0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bernd=20Pr=C3=BCnster?= Date: Mon, 2 Mar 2026 23:23:31 +0100 Subject: [PATCH 41/41] xcode optional --- .github/actions/common-setup/action.yml | 6 +++++- .github/workflows/test-everything.yml | 6 ++++++ .github/workflows/test-matrix-entry.yml | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/.github/actions/common-setup/action.yml b/.github/actions/common-setup/action.yml index 2e132eb..a59a7b9 100644 --- a/.github/actions/common-setup/action.yml +++ b/.github/actions/common-setup/action.yml @@ -10,6 +10,10 @@ inputs: description: Enable KVM for Android emulator tests required: false default: "false" # composite inputs are strings + setup-xcode: + description: "Setup XCode version" + required: false + default: false runs: using: "composite" @@ -26,7 +30,7 @@ runs: java-version: "17" - name: Setup Xcode - if: runner.os == 'macOS' + if: ${{ runner.os == 'macOS' && inputs.setup-xcode == 'true' }} uses: maxim-lobanov/setup-xcode@v1 with: xcode-version: "16.4.0" diff --git a/.github/workflows/test-everything.yml b/.github/workflows/test-everything.yml index 7deb6d6..d8fa8da 100644 --- a/.github/workflows/test-everything.yml +++ b/.github/workflows/test-everything.yml @@ -27,6 +27,11 @@ on: required: false type: string default: 'ubuntu-latest' + setup-xcode: + description: "Setup XCode version" + type: boolean + required: false + default: false jobs: prepare-matrix: @@ -51,3 +56,4 @@ jobs: enable-kvm: ${{ matrix.enableKvm || false }} kotlin-version: ${{ inputs.kotlin-version }} testballoon-version: ${{ inputs.testballoon-version }} + setup-xcode: ${{ inputs.setup-xcode }} diff --git a/.github/workflows/test-matrix-entry.yml b/.github/workflows/test-matrix-entry.yml index f41e5b7..ed1650a 100644 --- a/.github/workflows/test-matrix-entry.yml +++ b/.github/workflows/test-matrix-entry.yml @@ -26,6 +26,11 @@ on: required: false default: false type: boolean + setup-xcode: + description: 'set xcode version' + required: false + default: false + type: boolean kotlin-version: description: 'Override Kotlin version?' required: false @@ -63,6 +68,7 @@ jobs: with: override-cache: ${{ inputs.override-cache }} enable-kvm: ${{ inputs.enable-kvm }} + setup-xcode: ${{ inputs.setup-xcode }} - name: Run tests shell: 'bash'