Repository navigation
ci: Run CI jobs on ubuntu-26.04-arm - #8652
Draft
sentry-junior[bot] wants to merge 4 commits into
Draft
sentry-junior[bot] wants to merge 4 commits into
sentry-junior[bot] wants to merge 4 commits into
Conversation
Co-Authored-By: Joshua Li <14209781+joshuarli@users.noreply.github.com>
pbhandari
approved these changes
Nov 2, 2026
The event-name conditional kept x64 on push purely to mirror prod. CI should exercise the same architecture on every event, so drop the conditional and pin these jobs to the Arm runner. The image smoke test now always reads the arm64 buildx cache.
joshuarli
marked this pull request as draft
November 2, 2026 22:08
cp-kafka 6.2.0 and cp-zookeeper 6.2.0 are amd64-only. docker-compose.gcb.yml now runs cp-kafka 7.5.0 in KRaft mode (as sentry-shared-kafka does) and ClickHouse Keeper from the multi-arch ClickHouse image in place of ZooKeeper. The snuba-ci image is built for linux/arm64 with its own registry cache (buildcache-arm64) and also reads image.yml's arm64 gha cache. Co-Authored-By: Joshua Li <14209781+joshuarli@users.noreply.github.com>
On arm64 the snuba-ci image's loader config lists /lib/aarch64-linux-gnu before /usr/local/lib, so the Rust test binary loaded Debian's libpython3.13 instead of the image's 3.13.17. Importing ctypes then segfaulted in test_python. Point LD_LIBRARY_PATH at the interpreter's LIBDIR. Co-Authored-By: Joshua Li <14209781+joshuarli@users.noreply.github.com>
sentry-junior
Bot
force-pushed
the
ci/pr-arm-runners
branch
from
November 2, 2026 23:05
66747d3 to
d0fc713
Compare
sentry-junior
Bot
force-pushed
the
ci/pr-arm-runners
branch
2 times, most recently
from
November 3, 2026 00:42
767bad5 to
d0fc713
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Moves Snuba CI to
ubuntu-26.04-arm, including the test matrix, the snuba CI image build, the ClickHouse version matrix, and the 16 sentry shards. getsentry/sentry made the same move for backend tests. Every event runs these jobs on Arm, including pushes to master, so the two paths match.Now on Arm
ci.yml: snuba CI image, docker-deps, Tests and code coverage, clickhouse versions, sentry, Linting - Rust, and the jobs from the first commit (detect what files changed, bump_version test, pre-commit, config validation, admin tests, image smoke test, validate-devservices-config)admin-sourcemaps,ddl-changes,dependency-review,docs-pr,docs,validate-pipelines,validate-sentry-options, and theassemble/assemble-debugmanifest jobs inimage.ymlWhat had to change
docker-compose.gcb.ymlnow runs a newer multi-arch Kafka in KRaft mode, and ClickHouse Keeper replaces ZooKeeper (config/clickhouse/keeper.xml). Keeper runs from the same multi-arch ClickHouse image and serveszookeeper:2181, so the ClickHouse configs don't change. Withclickhouse-versions, Keeper uses each matrix image.linux/arm64withdocker/build-push-action. It has its own registry cache,snuba-ci:buildcache-arm64, which only master writes. It also reads thesnuba-arm64gha cache thatimage.ymlwrites. On this PR the image built in about 2.7m with no warm registry cache.runner.arch.docker savekeeps only the pulled platform, and the rustc commit hash is the same on both architectures.test_pythonsegfault: in the arm64 image,/etc/ld.so.conf.d/aarch64-linux-gnu.confcomes beforelibc.conf. So the test binary loaded Debian's/lib/aarch64-linux-gnu/libpython3.13.soinstead of the image's 3.13.17 in/usr/local/lib, and importingctypessegfaulted. On amd64,x86_64-linux-gnu.confsorts afterlibc.conf, which is why x64 never hit it.scripts/rust-envvarsnow puts the interpreter'sLIBDIRonLD_LIBRARY_PATH. gdb confirmed which libpython was loaded.Left on x64
enforce-license-compliance: the action installs FOSSA CLI v3.7.8, which has no linux arm64 binary.image.ymlbuild-production(the production image stays amd64),build-amd64, andself-hosted-end-to-end.codeql,release,bump-version,labeler, andfast-revertdon't run on PRs, so this PR can't check them on Arm.Timing (one Arm run, so treat it as directional)
The x64 baseline is the median of 8 recent successful PR runs of
ci. Wall time is measured from the first job start to the last job end.test_distributedshard 1 at 17.1m (pytest step 939s), vs 15.4 to 15.9m on x64 (pytest step 886s in the comparison run). This shard sets the wall time on both architectures.rust-cache. It should drop back to about 0.5m after master saves an Arm cache.test_distributedshard 1 took 15m on a later run, so that number is noisy. Wall time now depends on thetest_distributedshards, not the runner type. Splitting that suite into more shards is the next way to cut it.via @joshuarli.
--
View Session [Sentry]