[SDK-115] Drop racy parallel pre-build step from inapp-e2e-tests workflow#1060
Closed
franco-zalamena-iterable wants to merge 1 commit into
Closed
[SDK-115] Drop racy parallel pre-build step from inapp-e2e-tests workflow#1060franco-zalamena-iterable wants to merge 1 commit into
franco-zalamena-iterable wants to merge 1 commit into
Conversation
After the SDK-170 migration of this workflow to ubuntu-latest + KVM (#1048, commit 7d4a80b), every PR opened against master has been failing the In-App Message E2E Tests check at the build stage: Execution failed for task ':integration-tests:mergeDebugAndroidTestResources'. > Cannot access output property 'blameLogOutputFolder' … > Failed to create MD5 hash for file '.../merged_res_blame_folder/.../values-az.json' as it does not exist. with this warning a few lines earlier: Detected multiple Kotlin daemon sessions at kotlin/sessions The 'Pre-download Gradle and Build (Parallel with Emulator)' step backgrounded a separate Gradle invocation that was meant to assemble the APKs while the emulator booted. On macos-15-intel the background process was resource-starved during emulator boot (2 cores / slow HVF) so it usually finished or stalled before the action's Gradle started. On ubuntu-latest + KVM both Gradle processes get real CPU and run in true parallel, racing on the same integration-tests/build/intermediates directory. Affected runs: - feature/sdk-338-mobile-inbox-customization: 5 failures - fix/SDK-412-UUA-Naming-inconsistencies: 1 failure - SDK-170-emulator-network-trace: green (warm cache made the race window negligible — masked the regression during review) Removing the parallel pre-build is sufficient. The action's script already invokes ':integration-tests:connectedDebugAndroidTest' which transitively builds the APKs it needs. Expected wall-clock impact: +30-90s on a cold Gradle cache, traded for 'all PRs can run this check'. Co-authored-by: Cursor <cursoragent@cursor.com>
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.
Summary
First commit of SDK-115 (stabilising the BCIT integration-test suite in CI). This single change unblocks the in-app E2E check that has been red on every PR since 2026-05-18.
Supersedes #1055 (open since 2026-05-21, mergeable + all checks green, but unattended). If #1055 lands first, this PR becomes an empty no-op and I'll close it.
Root cause (verbatim from the workflow comment added in this commit)
The previous
Pre-download Gradle and Build (Parallel with Emulator)step backgrounded:On the old
macos-15-intelrunner this background process was CPU-starved by emulator boot, so the race window was tiny and nobody noticed. After commit7d4a80bamigrated the job toubuntu-latest+ KVM, both Gradle processes get real CPU and run in true parallel, racing onintegration-tests/build/intermediates/merged_res_blame_folder/and failing:integration-tests:mergeDebugAndroidTestResourceswith:The action's
script:already invokes./gradlew :integration-tests:connectedDebugAndroidTest, which transitively assembles the APKs, so the pre-build step is pure (broken) optimisation. Wall-clock cost of removing it: ~30-90s on cold Gradle cache.SDK-115 roadmap (this PR is step 1 of N)
Follow-up PRs on top of this one will:
integration-tests.yml(broken duplicate, uses non-BCIT secrets,macos-latest, deaddeveloptrigger) into the survivinginapp-e2e-tests.yml.InAppMessageIntegrationTest#testInAppMessageMVPto a matrix covering Push, Embedded, and Deep Link integration tests (the suite that the BCIT Iterable project was set up for).TestConstantsconstant.logcat.txtinto$GITHUB_STEP_SUMMARYon failure so PR reviewers don't need to download artifacts.integration-tests/google-services.json(inject via secret).Test plan
In-App Message E2E Tests (34)check on this PR and it goes green (prior evidence: same commit was green on Drop racy parallel pre-build step from inapp-e2e-tests workflow #1055 in 7m44s).Made with Cursor