Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 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
7a07b5d
Merge branch 'main' into chore/desktop-integration-test
bitsandfoxes Mar 5, 2026
1b47440
merge fuckup
bitsandfoxes Mar 5, 2026
2e312f2
second merge hickup
bitsandfoxes Mar 5, 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
171 changes: 52 additions & 119 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 @@ -328,16 +324,16 @@ 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:
smoke-test-run-webgl:
name: Run ${{ matrix.platform }} ${{ matrix.unity-version }} Smoke Test
if: ${{ !startsWith(github.ref, 'refs/heads/release/') }}
needs: [smoke-test-build, create-unity-matrix]
needs: [smoke-test-build-webgl, create-unity-matrix]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
unity-version: ${{ fromJSON(needs.create-unity-matrix.outputs.unity-matrix).unity-version }}
platform: ["WebGL", "Linux"]
platform: ["WebGL"]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the cleanup will follow afterwards.

steps:
- name: Checkout
uses: actions/checkout@v3
Expand All @@ -352,133 +348,70 @@ jobs:
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

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
145 changes: 145 additions & 0 deletions .github/workflows/smoke-test-build-linux.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
name: "IntegrationTest: Build Linux"
on:
workflow_call:
inputs:
unity-version:
required: true
type: string

defaults:
run:
shell: pwsh

jobs:
build:
name: Linux ${{ inputs.unity-version }}
runs-on: ubuntu-latest
env:
GITHUB_ACTOR: ${{ github.actor }}
UNITY_PATH: docker exec unity unity-editor
UNITY_VERSION: ${{ inputs.unity-version }}
BUILD_PLATFORM: Linux

steps:
- name: Checkout
uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3

- name: Free Disk Space
uses: jlumbroso/free-disk-space@f68fdb76e2ea636224182cfb7377ff9a1708f9b8 # v1.3.0
with:
android: true
dotnet: false
haskell: true
large-packages: false
docker-images: false
swap-storage: true

- name: Log into Docker
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # pinned v3
with:
registry: ghcr.io
username: ${{ env.GITHUB_ACTOR }}
password: ${{ secrets.GITHUB_TOKEN }}

- name: Start the Unity docker container
run: ./scripts/ci-docker.sh "$UNITY_VERSION" "Linux-il2cpp" "$UNITY_LICENSE_SERVER_CONFIG"
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
with:
name: smoke-test-${{ env.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-linux-${{ env.UNITY_VERSION }}-v1
restore-keys: |
Library-IntegrationTest-linux-${{ env.UNITY_VERSION }}-
Library-IntegrationTest-linux-

- name: Restore cached build without Sentry
id: cache-build-nosentry
uses: actions/cache@v4
with:
path: samples/IntegrationTest/Build-NoSentry
key: build-nosentry-Linux-${{ inputs.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" -Platform Linux -CheckSymbols:$false -BuildDirName "Build-NoSentry"

- name: Download UPM package
uses: vaind/download-artifact@e7141b6a94ef28aa3d828b52830cfa1f406a1848 # v4-with-wait-timeout
with:
name: package-release
wait-timeout: 3600

- 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" -Platform Linux -TestMode "integration"
env:
SENTRY_DSN: ${{ secrets.SENTRY_TEST_DSN }}

- name: Build with Sentry SDK
run: ./test/Scripts.Integration.Test/build-project.ps1 -UnityPath "$env:UNITY_PATH" -Platform Linux -CheckSymbols:$false -UnityVersion "$env: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 Linux -UnityVersion "$env:UNITY_VERSION"

- name: Upload build size measurement
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: build-size-Linux-${{ env.UNITY_VERSION }}
path: build-size-measurements/*.json
retention-days: 1

# We create tar explicitly because upload-artifact is slow for many files.
- name: Create archive
run: |
Remove-Item -Recurse -Force samples/IntegrationTest/Build/*_BackUpThisFolder_ButDontShipItWithYourGame -ErrorAction SilentlyContinue
tar -cvzf test-app-desktop.tar.gz samples/IntegrationTest/Build

- name: Upload test app
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: testapp-desktop-compiled-${{ env.UNITY_VERSION }}-linux
if-no-files-found: error
path: test-app-desktop.tar.gz
retention-days: 14

- name: Docker diagnostics on failure
if: ${{ failure() }}
run: |
Write-Host "=== Docker container status ==="
docker ps -a --filter "name=^/unity$"

Write-Host "`n=== Working directory ==="
docker exec unity pwd

Write-Host "`n=== Unity log from container ==="
docker exec unity cat /sentry-unity/unity.log 2>&1 || echo "unity.log not found"
continue-on-error: true

- name: Upload IntegrationTest project on failure
if: ${{ failure() }}
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: failed-project-desktop-linux-${{ env.UNITY_VERSION }}
path: |
samples/IntegrationTest
unity.log
!samples/IntegrationTest/Build/*_BackUpThisFolder_ButDontShipItWithYourGame
retention-days: 14
Loading
Loading