Skip to content

feat: deprioritize E2E jobs on Cirrus runners#29837

Merged
Qbandev merged 6 commits into
mainfrom
feat/mcwp-574-cirrus-runner-priority
May 8, 2026
Merged

feat: deprioritize E2E jobs on Cirrus runners#29837
Qbandev merged 6 commits into
mainfrom
feat/mcwp-574-cirrus-runner-priority

Conversation

@Qbandev

@Qbandev Qbandev commented May 7, 2026

Copy link
Copy Markdown
Contributor

Description

When Cirrus runner capacity is saturated, release/production build jobs compete equally with E2E builds, test runs, and fixture updates for runner slots. This means a time-sensitive release build can be queued behind dozens of E2E jobs triggered by PR pushes.

Cirrus Runners supports a binary priority system (regular and low-priority). This PR adds low-priority to all E2E/non-release Cirrus runner jobs so release pipeline jobs are serviced first during capacity saturation. When capacity is available, all jobs start immediately with no change in behavior.

Jobs deprioritized (E2E, non-release):

  • build-android-e2e.yml - E2E Android APK build
  • build-ios-e2e.yml - E2E iOS app build
  • run-e2e-workflow.yml - E2E test execution (both platforms)
  • update-e2e-fixtures.yml - Fixture export/update

Jobs kept at regular priority (release pipeline):

  • build.yml - Production/release native build
  • setup-node-modules.yml - Dependency setup for production builds
  • upload-to-testflight.yml - TestFlight upload

The actionlint.yaml config already includes low-priority as a known self-hosted runner label (line 17).

Note: A similar but narrower change was attempted in #19091 (Sep 2025, iOS E2E only, 1 file) and reverted in #19379 (12 days later, no documented reason). This PR covers both platforms and all 4 E2E workflow files.

Part of MCWP-574 (PR 5 of 5).

Changelog

CHANGELOG entry: null

Related issues

Fixes: MCWP-574

Manual testing steps

Feature: Cirrus runner job priority for release pipeline

  Scenario: E2E jobs run normally when capacity is available
    Given Cirrus runner capacity is not saturated
    When an E2E workflow is triggered (build or test)
    Then the job starts immediately with no delay
    And the job completes successfully

  Scenario: Release jobs are prioritized during capacity saturation
    Given Cirrus runner capacity is near saturation with E2E jobs
    When a release/production build is triggered via build.yml
    Then the release build job is allocated a runner before queued E2E jobs
    And E2E jobs resume after runners free up

Screenshots/Recordings

N/A - CI pipeline change, no UI impact.

Pre-merge author checklist

Pre-merge reviewer checklist

  • I've manually tested the PR (e.g. pull and build branch, run the app, test code being changed).
  • I confirm that this PR addresses all acceptance criteria described in the ticket it closes and includes the necessary testing evidence such as recordings and or screenshots.

Deprioritize E2E builds and test runs on Cirrus runners so that
release/production pipeline jobs are serviced first when runner
capacity is saturated.
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

CLA Signature Action: All authors have signed the CLA. You may need to manually re-run the blocking PR check if it doesn't pass in a few minutes.

@metamaskbotv2 metamaskbotv2 Bot added the team-dev-ops DevOps team label May 7, 2026
@github-actions github-actions Bot added the size-S label May 7, 2026
@Qbandev Qbandev added the no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed label May 7, 2026
@Qbandev Qbandev added Code Impact - Low Minor code change that can safely applied to the codebase and removed Code Impact - Low Minor code change that can safely applied to the codebase labels May 7, 2026
@Qbandev Qbandev marked this pull request as ready for review May 7, 2026 07:52
@Qbandev Qbandev requested review from a team as code owners May 7, 2026 07:52
Comment thread .github/workflows/build-android-e2e.yml Outdated
Comment thread .github/workflows/build-ios-e2e.yml Outdated
Comment thread .github/workflows/run-e2e-workflow.yml Outdated
E2E jobs on cherry-pick PRs to release/* branches now run at regular
priority so they are not queued behind main-branch E2E work during a
release cut. Uses startsWith(github.base_ref, 'release/') to detect
release-targeted PRs and omit the low-priority label.
@github-actions github-actions Bot added size-XS and removed size-S labels May 7, 2026
jvbriones
jvbriones previously approved these changes May 7, 2026
@Qbandev Qbandev added the Code Impact - Low Minor code change that can safely applied to the codebase label May 7, 2026
…runner-priority

# Conflicts:
#	.github/workflows/build-android-e2e.yml
#	.github/workflows/build-ios-e2e.yml
#	.github/workflows/run-e2e-workflow.yml
@github-actions

github-actions Bot commented May 7, 2026

Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

  • Selected E2E tags: SmokeAccounts
  • Selected Performance tags: None (no tests recommended)
  • Risk Level: low
  • AI Confidence: 92%
click to see 🤖 AI reasoning details

E2E Test Selection:
All 4 changed files are GitHub Actions workflow files with identical types of changes: modifying the runs-on runner configuration to route non-release branch (PR) builds to low-priority runners, while keeping release branch builds on standard runners. This is done using a conditional expression: startsWith(github.base_ref, 'release/') to distinguish release vs. PR builds.

The changes affect:

  • build-android-e2e.yml: Android APK build runner selection
  • build-ios-e2e.yml: iOS app build runner selection
  • run-e2e-workflow.yml: E2E test execution runner selection
  • update-e2e-fixtures.yml: Fixture update runner selection

No app source code, test logic, controllers, Engine, or test infrastructure was modified. The change is purely about which GitHub Actions runner label is used for CI jobs on PRs vs. release branches.

Since this is a CI infrastructure change that affects how E2E tests are dispatched and run, it's prudent to run at least one smoke test suite to validate the pipeline still functions correctly on the new runner configuration. SmokeAccounts is selected as a representative lightweight smoke suite to verify the end-to-end CI pipeline (build → run tests) works correctly with the new runner routing. Running all tags would be excessive for a pure runner label change.

Performance Test Selection:
The changes are purely CI runner routing changes (adding 'low-priority' label for PR builds). No app source code, UI components, controllers, data loading, or performance-sensitive paths were modified. Performance tests are not warranted.

View GitHub Actions results

@sonarqubecloud

sonarqubecloud Bot commented May 7, 2026

Copy link
Copy Markdown

@Qbandev Qbandev removed the Code Impact - Low Minor code change that can safely applied to the codebase label May 7, 2026
@Qbandev Qbandev added this pull request to the merge queue May 8, 2026
Merged via the queue into main with commit 8008f70 May 8, 2026
90 checks passed
@Qbandev Qbandev deleted the feat/mcwp-574-cirrus-runner-priority branch May 8, 2026 13:52
@github-actions github-actions Bot locked and limited conversation to collaborators May 8, 2026
@metamaskbotv2 metamaskbotv2 Bot added the release-7.78.0 Issue or pull request that will be included in release 7.78.0 label May 8, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-7.78.0 Issue or pull request that will be included in release 7.78.0 size-XS team-dev-ops DevOps team

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants