Skip to content

[pull] develop from rainbow-me:develop#361

Merged
pull[bot] merged 3 commits into
erickirt:developfrom
rainbow-me:develop
May 14, 2026
Merged

[pull] develop from rainbow-me:develop#361
pull[bot] merged 3 commits into
erickirt:developfrom
rainbow-me:develop

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented May 14, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? πŸ’– Please sponsor : )

olerass and others added 3 commits May 14, 2026 15:26
iOS E2E currently runs on every PR push with four shards on `macos-26-xlarge`. It's slow, expensive, and blocks merges; with stacked PRs it multiplies further because every restack reruns the suite. Flaky tests force manual re-triggers. The cost shows up both in development speed (approved work waits on heavy CI) and delivery (approved stacks blocked on duplicated checks).

This change moves iOS E2E off the PR-blocking path. The suite now runs on push to `develop` and as opt-in on labeled PRs:

- **Post-merge on `develop`**: a notify job posts to `#frontend-alerts` on failure, mentioning the commit author and assigning them to triage
- **Opt-in via `e2e` label**: replaces the `/e2e` comment trigger. Adding the label runs the suite; pushes to a labeled PR re-run via `synchronize`. Label write-access takes over the previous `author_association` check.

The alert path uses a new composite action that takes the Slack token, channel ID, and run URL; everything else (workflow name, branch, commit, PR link, author) is derived from the GitHub API. Commit authors resolve to real `@mentions` via `.github/slack-handles.json`, seeded with the active contributors from the last 6 months.

**What the alert will look like** (using a recent commit as an example):

> 🚨 **iOS E2E** failed on `develop`
>
> [`5c83a9f`](5c83a9f) chore: remove dead Cloudinary icon-signing fast-path ([#7443](#7443))
>
> @olerass - you are assigned to triage this failure.
>
> πŸ”˜ [View run](https://github.com/rainbow-me/rainbow/actions/runs/12345678)

This is the iOS portion of [RFC: Optimize CI and Delivery](https://www.notion.so/rainbowdotme/RFC-Optimize-CI-and-Delivery-348b001b85b481999ab9d5a5de33960b), with the scope adjustment that iOS lands on post-merge `develop` rather than nightly. Android gets the same treatment in a follow-up PR.
Follows up #7489 which did the same for iOS, applying the [RFC: Optimize CI and Delivery](https://www.notion.so/rainbowdotme/RFC-Optimize-CI-and-Delivery-348b001b85b481999ab9d5a5de33960b) to Android. The workflow contains both `e2e-tests` and `perf-tests` jobs and they're treated differently here:

- **`e2e-tests`** moves off the PR-blocking path. It runs on push to `develop` and as opt-in via the `e2e` label on PRs, matching iOS.
- **`perf-tests`** is unchanged: it keeps running automatically on every non-draft PR push. This will be moved off PRs in a separate step later.

The shared `build` job gates on the union of what either downstream needs: push events, automatic non-draft PR events (for perf), or `labeled` events with `e2e` (for e2e). A `notify-failure` job alerts `#frontend-alerts` on any post-merge failure across the 2 jobs (NOT perf), reusing the composite action and `slack-handles.json` introduced in #7489.
Fixes APP-3686

## What changed (plus any additional context for devs)

Sentry issue `RAINBOW-WALLET-3XAF` is noisy because `getClaimables` logged fetch failures as a fresh `RainbowError`, discarding the original cause. This preserves the underlying error as the `RainbowError` cause so the existing Sentry filters can drop
expected network failures and aborts instead of grouping them under claimables.
@pull pull Bot locked and limited conversation to collaborators May 14, 2026
@pull pull Bot merged commit 07b5c11 into erickirt:develop May 14, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants