Make CI stable and faster
Los mantenedores suelen responder en 5 días
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 20/100
Línea de trabajo
Start by reading the listed PRs in their stated merge order, beginning with getsentry/app-runner#65, then follow the sentry-unity stack from #2911 down to #2907. The issue describes multiple CI flakes, retries, cache changes, and timing fixes, with results from reruns and a full matrix run; done means the stack is merged bottom-up and CI remains stable and faster.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Why
CI on main is too flaky and too slow to trust:
- Only 29–30% of PR runs (33–40% on
main) are green on the first attempt. Most red runs pass on an unchanged rerun. - A green PR run takes 41 min at p50 and 80 min at p90.
- Unity license retries cost about 9 min per build job, 7,150 min over 30 days. A PR run starts 14 build jobs against 7–8 floating licenses shared with the team.
- Caches sit at ~11 GB against the 10 GB quota, so LRU eviction keeps runs cold.
A red run that goes green on a rerun teaches everyone to ignore red, and real regressions hide in the noise.
What
A stack of small PRs, each fixing one cause:
- Fail fast: stop the run when the SDK build fails, and cap job run time with
timeout-minutes. - Retries: retry known infra failures once, by a specific log signature that is printed when it fires. Examples: LicensingClient IPC timeout, an editor killed at startup, a Unity shutdown crash, Gradle 429, a segfaulting build tool, sentry-cli 5xx, an ingest 5xx on the crash report. Product and test bugs get fixed, not retried.
- Root-caused flakes:
- Native symbolication: sentry-cli returns before sentry.io has processed the upload, so events arrive before their symbols. The upload assertion now waits until sentry.io lists the uploaded debug files.
- iOS first launch: a launch less than ~2 min after the simulator boots can stall for minutes. The simulator now boots while the app compiles.
- Unity 6000.6 in Docker: Unity kills the PID in a
Library/burst.pidcopied from the Create job, which turned out to be the editor's ownxvfb-run. The stale pid files are now deleted before each build. - An Android test app that never initialises is relaunched once.
- App-hang tracking is on only in the App Hang test, so its 2 s watchdog can't add a second event to the crash test on a slow simulator.
- The playmode integration tests get 5 s to receive an event.
ConfigureOptionsrun a second time cleared the options configuration. This is an SDK bug users can hit too, with a CHANGELOG entry and EditMode tests.
- Speed:
- Two fewer Unity launches per integration test build, 52 → 24 launches per PR run.
- Integration test and native SDK caches keyed on their inputs.
- The leftover .NET 9 install and the workload restore are gone.
- The iOS size baseline and the simulator terminate stall are off the Run iOS critical path.
- The license retry is jittered and capped at 30 min.
Results so far
Ten back-to-back reruns of the unchanged stack tip:
Before (main 626d790c) |
Stack tip | |
|---|---|---|
| First-attempt green, PR | 29–30% | 8/10 |
| PR wall time p50/p90 | 41/80 min | 32.0/35.2 min |
| Unity launches per PR run | 52 | 24 |
| License-retry sleep | ~9 min per build job | 217–1,029 s per run in total |
- One of the two red runs was the
ConfigureOptionsbug, fixed since in #2911; its final head is green on the first attempt in 27.3 min. - The other was a one-off Unity-internal Bee IPC error (
Request cancelled while reading the binlog). - A full-matrix run (5 Unity versions) of the stack is green.
Merge order
The PRs are stacked; each one is based on the one below it. Merge from the bottom up. sentry-unity squash-merges, so after each merge the next PR is rebased onto main and its CI reruns.
app-runner goes first. The stack pins its PRs' exact commits, and merging them with merge commits keeps those pins valid:
- getsentry/app-runner#65 (pinned by #2910)
- getsentry/app-runner#64 (pinned by #2901)
main(app-runner)
sentry-unity, from the tip of the stack down to main:
- #2911 Fix the symbolication, iOS first-launch, ingest 5xx and burst.pid flakes, plus the
ConfigureOptionsfix - #2910 Take the iOS size baseline and the terminate stall off the Run iOS path (needs app-runner#65)
- #2909 Key the native SDK caches on their own inputs and skip the workload restore
- #2908 Recover from LicensingClient IPC timeouts, sentry-cli 5xx and flush timeouts
- #2906 Give the playmode integration tests 5 s to receive an event
- #2905 Cap job run time with
timeout-minutes - #2904 Retry known infra failures once, by signature
- #2903 Launch Unity two fewer times per integration test build
- #2902 Key the integration test caches on their inputs
- #2901 Relaunch an Android test app that never initialised once (needs app-runner#64)
- #2900 Jitter the Unity license retry and cap it at 30 minutes
- #2899 Enable app-hang tracking only in the App Hang integration test
- #2898 Fail fast when the SDK build fails
- #2907 Drop the leftover .NET 9 install from the Linux native SDK build
main
- Lenguaje dominante
- C#
- Estrellas
- 295
- Forks
- 63
- Merge medio
- 4 d 10 h
- PR fusionados (30 d)
- 29
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de getsentry/sentry-unity
-
Tests Unity
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
getsentry/sentry-unity#2918 · 1 comentario ·
Los mantenedores suelen responder en 5 días
-
Drop `Release` and `Environment` from the editor config windowQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. AbiertoBreaking Change Editor Good First Issue Improvement Unity
Dificultad 2/5 1-3 horas Aptitud para principiantes 58/100
getsentry/sentry-unity#2914 · 1 comentario ·
Los mantenedores suelen responder en 5 días
-
Unity
Dificultad 4/5 3-5 días Aptitud para principiantes 38/100
getsentry/sentry-unity#2873 · 2 comentarios ·
Los mantenedores suelen responder en 5 días
-
Feature Unity
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
getsentry/sentry-unity#2796 · 4 comentarios ·
Los mantenedores suelen responder en 5 días
-
Breaking Change Good First Issue Logs Task Unity
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
getsentry/sentry-unity#2659 · 2 comentarios ·
Los mantenedores suelen responder en 5 días
Todos los issues de getsentry/sentry-unity
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
Enable "remote"' featureAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
-
mode_has_nan gives MSVC warning C4702 (unreachable code)Posiblemente ocupada @ibmibmibm la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
georgeslegros/stream-deck-pilot#149 ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
MustacheCase/zanadir#506 ·
Los mantenedores suelen responder en 1 día