Skip to content

fix(ci): drop pipefail from the nightly Android emulator script - #1512

Merged
thymikee merged 1 commit into
mainfrom
fix/nightly-android-pipefail
Jul 31, 2026
Merged

fix(ci): drop pipefail from the nightly Android emulator script#1512
thymikee merged 1 commit into
mainfrom
fix/nightly-android-pipefail

Conversation

@thymikee

Copy link
Copy Markdown
Member

Problem

The Android Full Emulator Suite job in Replay Nightly has failed on every run since it landed in #1484 — it never once passed. It aborts before the first command:

/usr/bin/sh: 1: set: Illegal option -o pipefail
##[error]The process '/usr/bin/sh' failed with exit code 2

reactivecircus/android-emulator-runner executes its script: with /usr/bin/sh, which is dash on ubuntu runners, and dash has no pipefail option. The job burns a full emulator boot (~3 min) and then dies on line 1.

Latest occurrence: run 30603457576 (2026-07-31), same in the 2026-07-30 17:40 nightly. The last green nightly (2026-07-30 09:16) predates the job.

Fix

Use set -eu, matching the two sibling emulator scripts that already run correctly under the same action:

  • .github/workflows/android.ymlset -eu
  • .github/workflows/perf-nightly.ymlset -e

Dropping pipefail loses nothing here: the only pipeline is the ANDROID_SERIAL assignment, which is already validated by the test -n \"$ANDROID_SERIAL\" guard on the next line — the same contract android.yml relies on.

Verification

Reproduced and verified against a real dash (/bin/dash), which emits the identical error:

$ /bin/dash -c 'set -euo pipefail; echo reached'
/bin/dash: 1: set: Illegal option -o pipefail   # exit 2

$ /bin/dash -c 'set -eu; echo reached'
reached                                          # exit 0

The full 16-line script body extracted from the workflow also passes dash -n (no other bashisms). Swept every android-emulator-runner script: block in the repo — this was the only one affected.

Nightly is the only place this job runs, so the real proof is the next scheduled run (or a manual dispatch).

android-emulator-runner runs the script with /usr/bin/sh, which is dash on
ubuntu runners and rejects `-o pipefail`:

    /usr/bin/sh: 1: set: Illegal option -o pipefail

The Android full emulator suite has therefore failed on every nightly since
it landed in #1484, aborting before the first command. The sibling emulator
scripts in android.yml and perf-nightly.yml already use `set -eu`/`set -e`;
match them. The serial assignment stays guarded by `test -n".
@github-actions

Copy link
Copy Markdown

Size Report

Metric Base Current Diff
JS raw 1.91 MB 1.91 MB 0 B
JS gzip 612.2 kB 612.2 kB 0 B
npm tarball 729.7 kB 729.7 kB 0 B
npm unpacked 2.56 MB 2.56 MB 0 B

Startup median (7 runs, lower is better):

Scenario Base Current Diff
CLI --version 26.4 ms 26.7 ms +0.3 ms
CLI --help 57.0 ms 56.9 ms -0.1 ms

Top changed chunks: no changes in the largest emitted chunks.

@thymikee
thymikee merged commit 209ac83 into main Jul 31, 2026
27 checks passed
@thymikee
thymikee deleted the fix/nightly-android-pipefail branch July 31, 2026 05:57
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-07-31 05:57 UTC

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant