Repository navigation
Run the Android emulator tests in their own jobs - #347
Merged
Merged
Conversation
An Android SDK job with the emulator enabled built every triple one after another before it started the emulator, so the emulator waited on builds of triples it never runs. The script chose the triple to run by taking the last one in the list, an ordering convention a caller could not see. Replaced `android_sdk_triples`, `enable_android_emulator_tests` and the choice of emulator triple with two lists: `android_sdk_build_triples` for triples that are only built, and `android_emulator_test_triples` for triples that are built and run on an emulator. The defaults build `aarch64` only and run `x86_64` on the emulator. Each emulator triple builds in its own job, and the build-only triples share one job beside them. Only an emulator job builds the test binaries. `enable_android_sdk_build` still turns off all of the Android jobs. To drop only the emulator, empty `android_emulator_test_triples`, or move its triples to `android_sdk_build_triples` to keep building them. The generator fails when a triple appears more than once across the two lists, when one is blank, or, with the SDK build enabled, when both lists are empty. Entry names change because an entry is named for the triples it builds when they are split, for example `Android SDK Swift current NDK r30` becomes `Android SDK Swift current NDK r30 x86_64-android28` and `Android SDK Swift current NDK r30 aarch64-android28`. Entry names are required status checks in adopting repositories, so they will need updating, and a caller that set `android_sdk_triples` or `enable_android_emulator_tests` must switch to the new inputs.
Contributor
Author
|
@finagolfin do you have any opinions on this change? |
FranzBusch
approved these changes
Nov 3, 2026
Member
|
Skimmed it, seems fine to me: we discussed adding the multiple test triples portion of this in #226, so we want that feature. |
FranzBusch
pushed a commit
to apple/swift-temporal-sdk
that referenced
this pull request
Nov 9, 2026
### Motivation swiftlang/github-workflows#347 removed the enable_android_emulator_tests input, but this repo was still using it, leading to failures like [this one](https://github.com/apple/swift-temporal-sdk/actions/runs/42518064918). ### Modifications Removed the `enable_android_emulator_tests` flag, we don't need to turn off just emulators anyway since `enable_android_sdk_build` is already set to `false`. ### Result CI should start working again. ### Test Plan Will check it on the PR CI.
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.
Motivation
An Android SDK job with the emulator enabled built every triple one after another before it started the emulator, so the emulator waited on builds of triples it never runs.
The script also chose the triple to run by taking the last one in the list, an ordering convention which felt like a footgun.
Changes
Split out build and testing work into different jobs on separate executors, parallelizing the work.
Replaced
android_sdk_triples,enable_android_emulator_testsand the choice of emulator triple with two lists:android_sdk_build_triplesfor triples that are only built, andandroid_emulator_test_triplesfor triples that are built and run on an emulator. The defaults buildaarch64only and runx86_64on the emulator. Each emulator triple builds in its own job, and the build-only triples share one job beside them. Only an emulator job builds the test binaries.enable_android_sdk_buildstill turns off all of the Android jobs. To drop only the emulator, emptyandroid_emulator_test_triples, or move its triples toandroid_sdk_build_triplesto keep building them.The generator fails when a triple appears more than once across the two lists, when one is blank, or, with the SDK build enabled, when both lists are empty.
NOTE: When executing, entry names will change because an entry is named for the triples it builds when they are split, for example
becomes
Entry names are required status checks in adopting repositories, so they will need updating, and a caller that set
android_sdk_triplesorenable_android_emulator_testsmust switch to the new inputs.