Skip to content
Open
Show file tree
Hide file tree
Changes from 78 commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
65bfb99
First iteration
bitsandfoxes Feb 13, 2026
d90e410
Fixes
bitsandfoxes Feb 13, 2026
323d187
Remove startup awake span assertion
bitsandfoxes Feb 16, 2026
5b30b7d
Fixed desktop test validation order
bitsandfoxes Feb 16, 2026
20554a9
Fixed single-line pwsh command
bitsandfoxes Feb 16, 2026
b899cc5
strictmode workaround
bitsandfoxes Feb 16, 2026
7c93e12
Baking the DSN
bitsandfoxes Feb 16, 2026
3dceec0
.
bitsandfoxes Feb 16, 2026
e999f6e
Fix env
bitsandfoxes Feb 16, 2026
b6fc8a2
.
bitsandfoxes Feb 16, 2026
f39fb13
Fix double event capture
bitsandfoxes Feb 16, 2026
3902b68
Fixed log grouping
bitsandfoxes Feb 16, 2026
0638d92
Debug log level
bitsandfoxes Feb 16, 2026
f05f223
Fixing 'dist'
bitsandfoxes Feb 16, 2026
160f355
fallback to activity
bitsandfoxes Feb 16, 2026
f5e1c10
Do some fake work
bitsandfoxes Feb 16, 2026
10ba69c
Drop stripping level for older than 6
bitsandfoxes Feb 17, 2026
c2e1256
Fixed vulkan issues
bitsandfoxes Feb 17, 2026
a0318cf
Code generation settings and log output
bitsandfoxes Feb 17, 2026
aa815ff
AOT check
bitsandfoxes Feb 17, 2026
fc3c734
Bumped .NET to 'main'
bitsandfoxes Feb 19, 2026
ab6d14e
Mark crash-capture skipped tests as Skipped instead of silently passing
bitsandfoxes Feb 19, 2026
af19c5e
Extending the tests of scope sync to the crash tests
bitsandfoxes Feb 19, 2026
9588ff9
Skip app context assertion for crash-capture on Android
bitsandfoxes Feb 19, 2026
0ffce53
Improved on the crashed second run validation
bitsandfoxes Feb 19, 2026
8be86be
Incremental fix
bitsandfoxes Feb 19, 2026
d6c5084
Activity detection instead of try-catch
bitsandfoxes Feb 19, 2026
bf353f6
Get built-time check back in
bitsandfoxes Feb 20, 2026
d0e10ea
feedback
bitsandfoxes Feb 20, 2026
0cc6ab4
skip 'dist' for now
bitsandfoxes Feb 20, 2026
641f5e1
Apply suggestion from @bitsandfoxes
bitsandfoxes Feb 20, 2026
36943c3
Migrate iOS CI to use app-runner
bitsandfoxes Feb 23, 2026
8322cbd
bump app-runner
bitsandfoxes Feb 23, 2026
9cf1ec5
fixes
bitsandfoxes Feb 24, 2026
7f03d3f
Fix iOS integration test configuration
bitsandfoxes Feb 24, 2026
5915218
Timeout and retry
bitsandfoxes Feb 24, 2026
0965ded
machine feedback
bitsandfoxes Feb 25, 2026
0457ff8
Merge branch 'main' into feat/app-runner-ios
bitsandfoxes Feb 25, 2026
5f18483
timeout tweaks
bitsandfoxes Feb 25, 2026
5af6bdd
.
bitsandfoxes Feb 25, 2026
0f34226
Merge branch 'main' into feat/app-runner-ios
bitsandfoxes Feb 26, 2026
3d035ca
bumped app-runner
bitsandfoxes Feb 26, 2026
5a96ca9
Scope app context crash-capture skip to iOS only
bitsandfoxes Feb 26, 2026
8ce299c
Merge branch 'main' into feat/app-runner-ios
bitsandfoxes Feb 26, 2026
8803de8
bumped app-runner
bitsandfoxes Mar 3, 2026
b24c02a
desktop building and running
bitsandfoxes Mar 3, 2026
fbd0106
symbol upload
bitsandfoxes Mar 3, 2026
0c827ab
windows docker tweaks
bitsandfoxes Mar 3, 2026
8713530
fix unboun variable
bitsandfoxes Mar 3, 2026
a69115d
muck around with docker
bitsandfoxes Mar 3, 2026
c444ba6
more windows docker fun
bitsandfoxes Mar 3, 2026
7c78621
diagnostics
bitsandfoxes Mar 3, 2026
f9badd7
docker..
bitsandfoxes Mar 3, 2026
bcd7dff
unity path inside the container
bitsandfoxes Mar 3, 2026
b255005
pin win22, nographics
bitsandfoxes Mar 3, 2026
86f5906
back to win25. unity 6.3?
bitsandfoxes Mar 3, 2026
a1644da
nographics duplication
bitsandfoxes Mar 3, 2026
c5b3d03
handle 'nopgraphics'
bitsandfoxes Mar 4, 2026
dda6bf8
restructured desktop
bitsandfoxes Mar 4, 2026
29b84a8
remove windows docker
bitsandfoxes Mar 4, 2026
336c1b6
.
bitsandfoxes Mar 4, 2026
887c96b
stoptheslop
bitsandfoxes Mar 4, 2026
b533abf
routing log output to stdout
bitsandfoxes Mar 4, 2026
923c1cf
upsi
bitsandfoxes Mar 4, 2026
f5ffb41
run the app directly
bitsandfoxes Mar 4, 2026
d741d70
crashtype
bitsandfoxes Mar 4, 2026
6dff615
cleanup
bitsandfoxes Mar 4, 2026
cc11c6c
cleanup
bitsandfoxes Mar 4, 2026
dca01a5
merged *-run-* for desktop
bitsandfoxes Mar 4, 2026
d82cd1e
webgl
bitsandfoxes Mar 4, 2026
6ff3b4b
os
bitsandfoxes Mar 4, 2026
7a07b5d
Merge branch 'main' into chore/desktop-integration-test
bitsandfoxes Mar 5, 2026
5e93b72
Merge branch 'chore/desktop-integration-test' into feat/app-runner-webgl
bitsandfoxes Mar 5, 2026
3e8bf00
review
bitsandfoxes Mar 5, 2026
28a6b5a
message parsing
bitsandfoxes Mar 5, 2026
f13af9c
log printing
bitsandfoxes Mar 5, 2026
be0c49a
spaces in paths
bitsandfoxes Mar 5, 2026
f38c140
fixed webbackgroundworker
bitsandfoxes Mar 5, 2026
cb7d0d1
trycatch
bitsandfoxes Mar 5, 2026
6c0a10d
Merge branch 'main' into feat/app-runner-webgl
bitsandfoxes Mar 5, 2026
ba8ca92
third merge hickup
bitsandfoxes Mar 5, 2026
747d68b
.
bitsandfoxes Mar 6, 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
206 changes: 62 additions & 144 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,8 +98,8 @@ jobs:
with:
unity-version: ${{ matrix.unity-version }}

# A Linux, docker-based build to prepare a game ("player") for some platforms. The tests run in `smoke-test-run`.
smoke-test-build:
# A Linux, docker-based build to prepare a WebGL player. The tests run in `smoke-test-run`.
smoke-test-build-webgl:
name: Build ${{ matrix.platform }} ${{ matrix.unity-version }} Smoke Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-create, create-unity-matrix]
Expand All @@ -108,15 +108,11 @@ jobs:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
platform: ["WebGL", "Linux"]
platform: ["WebGL"]
include:
- platform: WebGL
check_symbols: true
build_platform: WebGL
- platform: Linux
image-suffix: "-il2cpp"
check_symbols: true
build_platform: Linux
env:
UNITY_PATH: docker exec unity unity-editor
steps:
Expand Down Expand Up @@ -193,9 +189,10 @@ jobs:
run: ./test/Scripts.Integration.Test/add-sentry.ps1 -UnityPath "$env:UNITY_PATH" -PackagePath "test-package-release"

- name: Configure Sentry
run: ./test/Scripts.Integration.Test/configure-sentry.ps1 -UnityPath "$env:UNITY_PATH" -Platform "$env:BUILD_PLATFORM" -CheckSymbols
run: ./test/Scripts.Integration.Test/configure-sentry.ps1 -UnityPath "$env:UNITY_PATH" -Platform "$env:BUILD_PLATFORM" -CheckSymbols -TestMode "integration"
env:
BUILD_PLATFORM: ${{ matrix.build_platform }}
SENTRY_DSN: ${{ secrets.SENTRY_TEST_DSN }}

- name: Build Project
run: ./test/Scripts.Integration.Test/build-project.ps1 -UnityPath "$env:UNITY_PATH" -Platform "$env:BUILD_PLATFORM" -CheckSymbols:$([System.Convert]::ToBoolean($env:CHECK_SYMBOLS)) -UnityVersion "$env:UNITY_VERSION"
Expand Down Expand Up @@ -223,15 +220,14 @@ jobs:
run: |
# Note: remove local.properties file that contains Android SDK & NDK paths in the Unity installation.
rm -rf samples/IntegrationTest/Build/*_BackUpThisFolder_ButDontShipItWithYourGame
tar -cvzf test-app-runtime.tar.gz samples/IntegrationTest/Build
tar -cvzf test-app-webgl.tar.gz samples/IntegrationTest/Build

# Upload runtime initialization build
- name: Upload test app
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: testapp-${{ matrix.platform }}-${{ matrix.unity-version }}-runtime
name: testapp-webgl-compiled-${{ matrix.unity-version }}
if-no-files-found: error
path: test-app-runtime.tar.gz
path: test-app-webgl.tar.gz
retention-days: 14

- name: Upload IntegrationTest project on failure
Expand Down Expand Up @@ -314,6 +310,7 @@ jobs:
secrets: inherit
strategy:
fail-fast: false
max-parallel: 2
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
ios-version: ["17.0", "latest"]
Expand All @@ -328,157 +325,78 @@ jobs:
# Also make sure to match the versions available here:
# - https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md

smoke-test-run:
name: Run ${{ matrix.platform }} ${{ matrix.unity-version }} Smoke Test
smoke-test-run-webgl:
name: Run WebGL ${{ matrix.unity-version }} Integration Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-build, create-unity-matrix]
runs-on: ubuntu-latest
needs: [smoke-test-build-webgl, create-unity-matrix]
secrets: inherit
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
platform: ["WebGL", "Linux"]
steps:
- name: Checkout
uses: actions/checkout@v3

- name: Download test app artifact
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
id: download
with:
name: testapp-${{ matrix.platform }}-${{ matrix.unity-version }}-runtime

- name: Extract test app
run: tar -xvzf test-app-runtime.tar.gz

- name: Run (WebGL)
if: ${{ matrix.platform == 'WebGL' }}
timeout-minutes: 10
run: |
pip3 install --upgrade --user selenium urllib3 requests
python3 scripts/smoke-test-webgl.py "samples/IntegrationTest/Build"

- name: Run Smoke Test (Linux)
if: ${{ matrix.platform == 'Linux' }}
run: ./test/Scripts.Integration.Test/run-smoke-test.ps1 -Smoke

- name: Run Crash Test (Linux)
if: ${{ matrix.platform == 'Linux' }}
run: ./test/Scripts.Integration.Test/run-smoke-test.ps1 -Crash
uses: ./.github/workflows/smoke-test-run-webgl.yml
with:
unity-version: ${{ matrix.unity-version }}

desktop-smoke-test:
name: Run ${{ matrix.os }} ${{ matrix.unity-version }} Smoke Test
smoke-test-build-linux:
name: Build Linux ${{ matrix.unity-version }} Integration Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-create, create-unity-matrix, build-unity-sdk]
runs-on: ${{ matrix.os }}-latest
needs: [smoke-test-create, create-unity-matrix]
secrets: inherit
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
os: ["windows"]
include:
- os: windows
unity-modules: "windows-il2cpp"
unity-config-path: "C:/ProgramData/Unity/config/"
# os: ["windows", "macos"]
# include:
# - os: macos
# unity-modules: mac-il2cpp
# unity-config-path: /Library/Application Support/Unity/config/
steps:
- name: Checkout
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

- name: Load env
id: env
run: echo "unityVersion=$(./scripts/ci-env.ps1 "$env:UNITY_SCRIPT_ARG")" >> $env:GITHUB_OUTPUT
env:
UNITY_SCRIPT_ARG: unity${{ matrix.unity-version }}

- name: Setup Unity
uses: getsentry/setup-unity@3bdc8c022b6d30ecf2d21d12a564bfa55a54fa2e
with:
unity-version: ${{ steps.env.outputs.unityVersion }}
unity-modules: ${{ matrix.unity-modules }}

- name: Create Unity license config
run: |
New-Item -Path "$env:UNITY_CONFIG_PATH" -ItemType Directory
Set-Content -Path "$env:UNITY_CONFIG_PATH/services-config.json" -Value "$env:UNITY_LICENSE_SERVER_CONFIG"
env:
UNITY_CONFIG_PATH: ${{ matrix.unity-config-path }}
UNITY_LICENSE_SERVER_CONFIG: ${{ secrets.UNITY_LICENSE_SERVER_CONFIG }}

- name: Download IntegrationTest project
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: smoke-test-${{ matrix.unity-version }}

- name: Extract project archive
run: tar -xvzf test-project.tar.gz

- name: Cache Unity Library
uses: actions/cache@d4323d4df104b026a6aa633fdb11d772146be0bf # v4.2.2
with:
path: samples/IntegrationTest/Library
key: Library-IntegrationTest-${{ matrix.os }}-${{ matrix.unity-version }}-v1
restore-keys: |
Library-IntegrationTest-${{ matrix.os }}-${{ matrix.unity-version }}-
Library-IntegrationTest-${{ matrix.os }}-

- name: Restore cached build without Sentry
id: cache-build-nosentry
uses: actions/cache@v4
with:
path: samples/IntegrationTest/Build-NoSentry
key: build-nosentry-Windows-${{ matrix.unity-version }}

- name: Build without Sentry SDK
if: steps.cache-build-nosentry.outputs.cache-hit != 'true'
run: ./test/Scripts.Integration.Test/build-project.ps1 -UnityPath "$env:UNITY_PATH" -CheckSymbols:$false -BuildDirName "Build-NoSentry"

- name: Download UPM package
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
name: package-release

- name: Extract UPM package
run: ./test/Scripts.Integration.Test/extract-package.ps1

- name: Add Sentry to the project
run: ./test/Scripts.Integration.Test/add-sentry.ps1 -UnityPath "$env:UNITY_PATH" -PackagePath "test-package-release"

- name: Configure Sentry
run: ./test/Scripts.Integration.Test/configure-sentry.ps1 -UnityPath "$env:UNITY_PATH" -CheckSymbols

- name: Build with Sentry SDK
run: ./test/Scripts.Integration.Test/build-project.ps1 -UnityPath "$env:UNITY_PATH" -CheckSymbols -UnityVersion "$env:UNITY_VERSION"
env:
UNITY_VERSION: ${{ matrix.unity-version }}

- name: Compare build sizes
run: ./test/Scripts.Integration.Test/measure-build-size.ps1 -Path1 "samples/IntegrationTest/Build-NoSentry" -Path2 "samples/IntegrationTest/Build" -Platform "Windows" -UnityVersion "$env:UNITY_VERSION"
env:
UNITY_VERSION: ${{ matrix.unity-version }}
uses: ./.github/workflows/smoke-test-build-linux.yml
with:
unity-version: ${{ matrix.unity-version }}

- name: Upload build size measurement
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: build-size-Windows-${{ matrix.unity-version }}
path: build-size-measurements/*.json
retention-days: 1
smoke-test-build-windows:
name: Build Windows ${{ matrix.unity-version }} Integration Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-create, create-unity-matrix]
secrets: inherit
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
uses: ./.github/workflows/smoke-test-build-windows.yml
with:
unity-version: ${{ matrix.unity-version }}

- name: Run Smoke Test
run: ./test/Scripts.Integration.Test/run-smoke-test.ps1 -Smoke
smoke-test-run-linux:
name: Run Linux ${{ matrix.unity-version }} Integration Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-build-linux, create-unity-matrix]
secrets: inherit
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
uses: ./.github/workflows/smoke-test-run-desktop.yml
with:
unity-version: ${{ matrix.unity-version }}
platform: linux

- name: Run Crash Test
run: ./test/Scripts.Integration.Test/run-smoke-test.ps1 -Crash
smoke-test-run-windows:
name: Run Windows ${{ matrix.unity-version }} Integration Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-build-windows, create-unity-matrix]
secrets: inherit
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
uses: ./.github/workflows/smoke-test-run-desktop.yml
with:
unity-version: ${{ matrix.unity-version }}
platform: windows

build-size-summary:
name: Build Size
runs-on: ubuntu-latest
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-build, smoke-test-build-android, smoke-test-compile-ios, desktop-smoke-test]
needs: [smoke-test-build-webgl, smoke-test-build-android, smoke-test-compile-ios, smoke-test-build-linux, smoke-test-build-windows]
steps:
- name: Checkout
uses: actions/checkout@v3
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/smoke-test-build-android.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ jobs:
shell: bash
env:
UNITY_LICENSE_SERVER_CONFIG: ${{ secrets.UNITY_LICENSE_SERVER_CONFIG }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

- name: Download IntegrationTest project
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/smoke-test-build-ios.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ jobs:
shell: bash
env:
UNITY_LICENSE_SERVER_CONFIG: ${{ secrets.UNITY_LICENSE_SERVER_CONFIG }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}

- name: Download IntegrationTest project
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
Expand Down
Loading
Loading