Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
ac25f91
Add helper workflows to make testing more modular
n0900 Dec 10, 2025
a931ed4
Add more helper workflows
n0900 Jan 7, 2026
ca6da07
Allow workflow call
n0900 Jan 7, 2026
f1f7198
Allow version inputs
n0900 Jan 7, 2026
9feb6ab
Add gradle native caching
n0900 Jan 7, 2026
24138c5
Add gradle native caching
n0900 Jan 7, 2026
38de67f
Add gradle native caching
n0900 Jan 7, 2026
3882c20
Add gradle native caching
n0900 Jan 7, 2026
810351c
Rename input param
n0900 Jan 7, 2026
6aedfcb
Add Android support
n0900 Jan 8, 2026
4ef2a09
Add iOS support
n0900 Jan 8, 2026
a228967
Add dorny android path
n0900 Jan 8, 2026
d41d273
Add runner-setup action
n0900 Jan 8, 2026
8b156a8
Add runner-setup action
n0900 Jan 8, 2026
cb27bd8
Add reporting action
n0900 Jan 8, 2026
d8ea048
Add reporting action
n0900 Jan 8, 2026
0c8ff74
Update build workflows
n0900 Jan 8, 2026
918620f
Fix var name
n0900 Jan 8, 2026
b8c93b4
Add modular build xc
n0900 Jan 19, 2026
ca757cf
Add modular build xc
n0900 Jan 19, 2026
67d54d1
Add modular build xc
n0900 Jan 19, 2026
aea3312
Add modular build xc
n0900 Jan 19, 2026
b08fbd1
Add modular build xc
n0900 Jan 19, 2026
54732e0
Add modular build xc
n0900 Jan 19, 2026
cbdeedd
Improve workflow naming
n0900 Jan 19, 2026
3a3f587
Fix variable name
n0900 Jan 19, 2026
3b308b6
Improve workflow naming
n0900 Jan 19, 2026
cd321c1
Update actions
n0900 Jan 21, 2026
c29e773
Add test-manually.yml
n0900 Jan 21, 2026
1852f4c
Update actions
n0900 Jan 21, 2026
57c5222
Add test-manually.yml
n0900 Jan 21, 2026
5eabf24
Add test-manually.yml
n0900 Jan 21, 2026
28e3e84
Add test-manually.yml
n0900 Jan 21, 2026
5f78cde
Add test-manually.yml
n0900 Jan 21, 2026
0be3adb
Add test-manually.yml
n0900 Jan 21, 2026
1443a8c
Bump xcode version to 16.4.0
n0900 Jan 21, 2026
e8f9546
Refactor test command and add report/metrics paths
JesusMcCloud Feb 25, 2026
b2da0b0
test command
JesusMcCloud Feb 25, 2026
4f176c9
Allow custom matrix runner
n0900 Mar 2, 2026
9992bf9
Fix workflow param requirement
n0900 Mar 2, 2026
84c2e0d
xcode optional
JesusMcCloud Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/actions/common-reporting/action.yml
Original file line number Diff line number Diff line change
@@ -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.report-name }}-${{ inputs.matrix-identifier }}
path: ${{ inputs.report-path }}
list-suites: failed
list-tests: failed
reporter: java-junit
use-actions-summary: true

- name: Upload metrics
uses: actions/upload-artifact@v6
with:
name: metrics-${{ inputs.matrix-identifier }}
path: ${{ inputs.metrics-path }}
if-no-files-found: ignore
51 changes: 51 additions & 0 deletions .github/actions/common-setup/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Common CI Setup
description: Checkout + Java + optional Xcode + optional KVM

inputs:
override-cache:
description: 'Override Cache?'
required: false
default: "false"
enable-kvm:
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"
steps:
- name: Checkout
uses: actions/checkout@v6
with:
submodules: recursive

- name: Setup Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "17"

- name: Setup Xcode
if: ${{ runner.os == 'macOS' && inputs.setup-xcode == 'true' }}
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: "16.4.0"

- 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
57 changes: 57 additions & 0 deletions .github/workflows/build-everything.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
name: Build - Everything

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
default: ''
type: string
testballoon-version:
description: 'Override TestBalloon version (full version string)?'
required: false
default: ''
type: string
build-matrix-runner:
description: 'Name of target runner to parse build matrix; defaults to ubuntu-latest'
required: false
type: string
default: 'ubuntu-latest'

jobs:
prepare-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 }}
runner: ${{ inputs.build-matrix-runner }}

build-jar:
name: Build JAR - ${{ matrix.module }}
needs: prepare-matrix
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }}
uses: a-sit-plus/internal-workflows/.github/workflows/build-jar-matrix-entry.yml@feature/modularTests
with:
module: ${{ matrix.module }}
kotlin-version: ${{ inputs.kotlinVersion }}
testballoon-version: ${{ inputs.testballoonVersion }}

build-xc:
name: Build XCFramework - ${{ matrix.module }}
needs: prepare-matrix
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.prepare-matrix.outputs.matrix) }}
uses: a-sit-plus/internal-workflows/.github/workflows/build-xc-matrix-entry.yml@feature/modularTests
with:
module: ${{ matrix.module }}
artifact-name: ${{ matrix.artifactName }}
kotlin-version: ${{ inputs.kotlinVersion }}
testballoon-version: ${{ inputs.testballoonVersion }}
43 changes: 43 additions & 0 deletions .github/workflows/build-jar-matrix-entry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
name: Build - JAR 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:
name: "Build JAR (ubuntu-latest) - ${{ inputs.module }}"
runs-on: ubuntu-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 jar
run: ./gradlew assemble

- name: Upload jar ${{ inputs.module }}
uses: actions/upload-artifact@v6
with:
name: ${{ inputs.module }}
path: ${{ inputs.module }}/build/libs/*.jar
if-no-files-found: error
55 changes: 55 additions & 0 deletions .github/workflows/build-xc-matrix-entry.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
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:
name: "Build XCFramework (macos-latest) - ${{ inputs.module }}"
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@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@v6
with:
name: ${{ inputs.artifact-name }}-release.xcframework
path: ${{ inputs.name }}/build/XCFrameworks/release/
if-no-files-found: error
2 changes: 1 addition & 1 deletion .github/workflows/cla.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/guard-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
34 changes: 34 additions & 0 deletions .github/workflows/prepare-matrix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
name: Matrix - Prepare

on:
workflow_call:
inputs:
file-name:
description: 'Json File containing arbitrary strategy-matrix'
required: true
type: string
runner:
description: 'Name of target runner; defaults to ubuntu-latest'
required: false
type: string
default: 'ubuntu-latest'
outputs:
matrix:
description: 'JSON matrix to be used by caller'
value: ${{ jobs.prepare.outputs.matrix }}

jobs:
prepare:
name: Generate matrix JSON
runs-on: ${{ inputs.runner }}
outputs:
matrix: ${{ steps.load.outputs.matrix }}
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Load matrix.json
id: load
run: |
MATRIX_JSON=$(jq -c . ${{ inputs.file-name}})
echo "matrix=$MATRIX_JSON" >> "$GITHUB_OUTPUT"
59 changes: 59 additions & 0 deletions .github/workflows/test-everything.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Test - Everything

on:
workflow_call:
inputs:
override-cache:
description: 'Override Cache?'
required: true
default: false
type: boolean
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
test-matrix-runner:
description: 'Name of target runner to parse test matrix; defaults to ubuntu-latest'
required: false
type: string
default: 'ubuntu-latest'
setup-xcode:
description: "Setup XCode version"
type: boolean
required: false
default: false

jobs:
prepare-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 }}
runner: ${{ inputs.test-matrix-runner }}

run-tests:
name: Run tests - ${{ matrix.name }} on ${{ matrix.os }}
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:
override-cache: ${{ inputs.override-cache }}
os: ${{ matrix.os }}
name: ${{ matrix.name }}
testCommand: ${{ matrix.testCommand }}
enable-kvm: ${{ matrix.enableKvm || false }}
kotlin-version: ${{ inputs.kotlin-version }}
testballoon-version: ${{ inputs.testballoon-version }}
setup-xcode: ${{ inputs.setup-xcode }}
Loading