Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
3 changes: 3 additions & 0 deletions .github/workflows/alpine.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}

- uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
with:
# The action runs this image privileged, so it's pinned like the action
image: docker.io/tonistiigi/binfmt@sha256:400a4873b838d1b89194d982c45e5fb3cda4593fbfd7e08a02e76b03b21166f0
- uses: docker/setup-buildx-action@594f3bf4285d9ea8dc53c9a0c9c4092420091003 # v4.4.0

- uses: docker/build-push-action@c3c9e263c25d99ce0380d002d59b67737d91b0dc # v7.4.0
Expand Down
82 changes: 31 additions & 51 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,37 @@ jobs:
with:
path: integration-test

# Sentry turns SentryNative off on runtimes that have no native SDK. aot.Tests.ps1 checks that against this
# leg's own packages: linux-arm on the linux-arm64 runner, and win-x86 on the win-x64 runner.

@jamescrosswell jamescrosswell Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

aot.Tests.ps1 checks that against this leg's own packages

Similar issue to https://github.com/getsentry/sentry-dotnet/pull/5809/changes#r4383085676 but probably not as much of a concern here as I think AOT builds/tests for non-mobile code are less sensitive to changes to the runners. So OK to do it in this case - just worth noting we'd be breaking an otherwise long held and inflexible rule that we only/always test the same thing that we ship.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Agreed. With the #5809 change, release runs test the shipped MAUI packages again. The unsupported AOT cases stay on the leg's own packages: whether SentryNative is on comes from a fixed RID list in the package's targets, not from what's bundled.

- name: Install Linux ARM 32-bit dependencies
if: matrix.rid == 'linux-arm64'
run: |
sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt-get install -y gcc-arm-linux-gnueabihf libc6:armhf

# Some arm64 hosts can't run 32-bit ARM binaries ("Exec format error"), so QEMU runs them on every host. Its
# binfmt_misc handler takes precedence over the kernel's own loader, so it does even where the host could.
- name: Set up QEMU for 32-bit ARM
if: matrix.rid == 'linux-arm64'
uses: docker/setup-qemu-action@99012661954931238ded8c8b007157a8430204e1 # v4.4.0
with:
# The action runs this image privileged, so it's pinned like the action
image: docker.io/tonistiigi/binfmt@sha256:400a4873b838d1b89194d982c45e5fb3cda4593fbfd7e08a02e76b03b21166f0
platforms: arm

- name: Check that QEMU handles 32-bit ARM binaries
if: matrix.rid == 'linux-arm64'
run: grep -q '^enabled' /proc/sys/fs/binfmt_misc/qemu-arm

- name: Test AOT on an unsupported runtime
if: matrix.rid == 'linux-arm64' || matrix.rid == 'win-x64'
uses: getsentry/github-workflows/sentry-cli/integration-test@959162c159b866489d3fabe93327f48f9b8cb7ee # 3.4.1
env:
RuntimeIdentifier: ${{ matrix.rid == 'linux-arm64' && 'linux-arm' || 'win-x86' }}
with:
path: integration-test/aot.Tests.ps1

# # For the linux-musl runtimes we have to pin the ContainerBaseImage for preview or RC builds, since
# # these don't conform to the normal naming conventions and don't get resolved automatically. We do
# # by passing it as parameter to aot.Tests.ps1 via an environment variable
Expand Down Expand Up @@ -484,57 +515,6 @@ jobs:
msbuild-maui.binlog
if-no-files-found: ignore

# Unsupported Native AOT runtimes should have SentryNative auto-disabled
# to avoid native library loading errors on startup.
unsupported-aot:
needs: build-sentry
name: Unsupported AOT (${{ matrix.rid }})
runs-on: ${{ matrix.os }}
env:
DOTNET_CLI_TELEMETRY_OPTOUT: 1
DOTNET_NOLOGO: 1

strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-24.04-arm
rid: linux-arm
- os: windows-latest
rid: win-x86

# This job is on the critical path, after the whole build-sentry matrix. aot.Tests.ps1 only publishes a
# console app against the packages from the macOS build, so it needs the .NET SDK but not the full
# Setup Environment (Java, Android SDK, workloads).
steps:
- name: Checkout
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Install Linux ARM 32-bit dependencies
if: ${{ matrix.rid == 'linux-arm' }}
run: |
sudo dpkg --add-architecture armhf
sudo apt-get update
sudo apt-get install -y gcc-arm-linux-gnueabihf libc6:armhf

- name: Install .NET SDK
uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0
with:
global-json-file: global.json

- name: Fetch NuGet Packages
uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8.0.2
with:
name: ${{ github.sha }}
path: src

- name: Test AOT
uses: getsentry/github-workflows/sentry-cli/integration-test@959162c159b866489d3fabe93327f48f9b8cb7ee # 3.4.1
env:
RuntimeIdentifier: ${{ matrix.rid }}
with:
path: integration-test/aot.Tests.ps1

trim-analysis:
needs: build-sentry-native
name: Trim analysis
Expand Down
Loading