Skip to content

feat(ci): POC Bitrise GH Action runners for iOS E2E#28791

Merged
Qbandev merged 14 commits into
mainfrom
feat/infra-3527-bitrise-ios-runners-poc
Apr 16, 2026
Merged

feat(ci): POC Bitrise GH Action runners for iOS E2E#28791
Qbandev merged 14 commits into
mainfrom
feat/infra-3527-bitrise-ios-runners-poc

Conversation

@Qbandev
Copy link
Copy Markdown
Contributor

@Qbandev Qbandev commented Apr 14, 2026

Description

Adds a temporary optional workflow to benchmark iOS E2E builds and tests on Bitrise-provided GitHub Actions self-hosted runners as an alternative to the current Cirrus CI macOS runners.

What changed:

  • New temp-bitrise-ios-e2e.yml workflow (standalone benchmarking, not part of CI gate)
  • run-e2e-workflow.yml added use_bitrise_runner boolean input for optional Bitrise runner routing, plus Vagrant path fix
  • run-e2e-smoke-tests-ios.yml threaded use_bitrise_runner through all 13 smoke test jobs

Trigger strategy:

  • PRs: opt-in via bitrise-poc label only (label-based + synchronize)
  • Main: hourly cron for baseline data collection
  • Concurrency group per branch (stale pushes auto-cancelled)
  • Fork PRs blocked from running on self-hosted runners

Existing CI pipeline is NOT modified. All defaults preserved (Cirrus runners remain the default).

Security:

  • Label-gated trigger (no automatic execution on all PRs)
  • Fork PR guard (!github.event.pull_request.head.repo.fork)
  • Boolean input with hardcoded runner group name (no string injection)
  • configure-keystores: false (no signing certificates on Bitrise runners)

Changelog

CHANGELOG entry: null

Related issues

Fixes: INFRA-3527

Manual testing steps

Feature: Bitrise iOS E2E Runner Benchmarking

  Scenario: Trigger benchmarking workflow via label
    Given a PR exists on the repo
    When user adds the bitrise-poc label
    Then the iOS build starts on Bitrise runner
    And all 13 smoke test suites run on Bitrise runners
    And artifacts are uploaded
    And no sensitive data appears in workflow logs

  Scenario: Fork PR does not trigger
    Given a fork PR exists with the bitrise-poc label
    Then the workflow is skipped

Screenshots/Recordings

N/A (CI workflow changes only)

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.

@github-actions
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.

@metamaskbot metamaskbot added the team-dev-ops DevOps team label Apr 14, 2026
@Qbandev Qbandev added DO-NOT-MERGE Pull requests that should not be merged no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed labels Apr 14, 2026
@metamaskbot metamaskbot added the INVALID-PR-TEMPLATE PR's body doesn't match template label Apr 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

E2E Fixture Validation — Schema is up to date
11 value mismatches detected (expected — fixture represents an existing user).
View details

@Qbandev Qbandev marked this pull request as ready for review April 14, 2026 11:23
@Qbandev Qbandev requested a review from a team as a code owner April 14, 2026 11:23
@Qbandev Qbandev removed the DO-NOT-MERGE Pull requests that should not be merged label Apr 14, 2026
@metamaskbot metamaskbot removed the INVALID-PR-TEMPLATE PR's body doesn't match template label Apr 14, 2026
@Qbandev Qbandev changed the title feat(ci): POC Bitrise GH Action runners for iOS E2E [INFRA-3527] feat(ci): POC Bitrise GH Action runners for iOS E2E Apr 14, 2026
@Qbandev Qbandev requested a review from Copilot April 14, 2026 11:53
@github-actions github-actions Bot added the risk-low Low testing needed · Low bug introduction risk label Apr 14, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an opt-in (workflow_dispatch-only) benchmarking path to run iOS E2E builds/tests on Bitrise-provided GitHub Actions self-hosted runners, without changing the default CI runner behavior.

Changes:

  • Added a temporary standalone [TEMP] Bitrise iOS E2E POC workflow for benchmarking Bitrise runners.
  • Introduced a use_bitrise_runner boolean input to route iOS E2E jobs to a hardcoded Bitrise runner group, plus a Bitrise/Vagrant path workaround.
  • Threaded use_bitrise_runner through all iOS smoke-test jobs so the routing toggle applies consistently.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
.github/workflows/temp-bitrise-ios-e2e.yml New workflow_dispatch-only benchmarking workflow to build iOS E2E app on Bitrise runners and optionally run smoke tests.
.github/workflows/run-e2e-workflow.yml Adds use_bitrise_runner input, updates runs-on selection for iOS, and adds Bitrise/Vagrant path fix step.
.github/workflows/run-e2e-smoke-tests-ios.yml Adds use_bitrise_runner input and forwards it to all smoke-test jobs that call run-e2e-workflow.yml.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/temp-bitrise-ios-e2e.yml Outdated
Comment thread .github/workflows/temp-bitrise-ios-e2e.yml Outdated
Comment thread .github/workflows/run-e2e-workflow.yml Outdated
Comment thread .github/workflows/run-e2e-workflow.yml Outdated
Comment thread .github/workflows/temp-bitrise-ios-e2e.yml Outdated
@Qbandev Qbandev force-pushed the feat/infra-3527-bitrise-ios-runners-poc branch from 07d39af to 9c1f79d Compare April 14, 2026 12:50
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 14, 2026
Adds temporary optional workflow to benchmark iOS E2E builds and tests
on Bitrise-provided GitHub Actions self-hosted runners.

Changes:
- New temp-bitrise-ios-e2e.yml: workflow_dispatch-only benchmarking workflow
- run-e2e-workflow.yml: use_bitrise_runner boolean input, conditional runner
  routing, Vagrant path fix (guarded by boolean + platform check)
- run-e2e-smoke-tests-ios.yml: threaded use_bitrise_runner through all 13 jobs

Security: workflow_dispatch only trigger, hardcoded runner group name,
configure-keystores: false, sanitized diagnostics.

Existing CI pipeline behavior unchanged — all defaults preserved.

INFRA-3527

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@Qbandev Qbandev force-pushed the feat/infra-3527-bitrise-ios-runners-poc branch from 9c1f79d to fef8883 Compare April 14, 2026 12:59
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 14, 2026
@Qbandev Qbandev requested a review from Copilot April 14, 2026 13:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/run-e2e-workflow.yml
@github-actions github-actions Bot removed the risk-low Low testing needed · Low bug introduction risk label Apr 14, 2026
@Qbandev Qbandev requested a review from Copilot April 15, 2026 16:19
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 15, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/temp-bitrise-ios-e2e.yml
Comment thread .github/workflows/run-e2e-workflow.yml
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 16, 2026
@github-project-automation github-project-automation Bot moved this to Needs dev review in PR review queue Apr 16, 2026
jvbriones
jvbriones previously approved these changes Apr 16, 2026
Use bitrise_pool_name:DemoFAXL label to route iOS build jobs to
XL machines (14c/54GB) and bitrise_pool_name:DemoFA label to route
E2E test jobs to Large machines (10c/28GB).
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 16, 2026
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 16, 2026
Register bitrise_pool_name:DemoFA and bitrise_pool_name:DemoFAXL
as known self-hosted runner labels so actionlint does not reject them.
@github-actions github-actions Bot added risk-low Low testing needed · Low bug introduction risk and removed risk-low Low testing needed · Low bug introduction risk labels Apr 16, 2026
@github-actions
Copy link
Copy Markdown
Contributor

🔍 Smart E2E Test Selection

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

E2E Test Selection:
All 4 changed files are CI/infrastructure-only changes with zero application code modifications:

  1. run-e2e-smoke-tests-ios.yml: Adds a use_bitrise_runner boolean input (default: false) and propagates it to all iOS smoke test jobs. Existing behavior is completely unchanged when the flag is not set.

  2. run-e2e-workflow.yml: Adds the same use_bitrise_runner input and conditionally routes iOS jobs to Bitrise self-hosted runners when enabled. Also adds a Vagrant path symlink fix step that only runs when use_bitrise_runner=true on iOS. Default behavior is unchanged.

  3. temp-bitrise-ios-e2e.yml: A brand new TEMPORARY workflow (INFRA-3527) explicitly marked as NOT part of the CI gate. It only runs when the bitrise-poc label is applied or on a schedule, purely for benchmarking Bitrise vs Cirrus runner performance. It will be removed after benchmarking.

  4. actionlint.yaml: Adds two Bitrise runner label strings to the allowed self-hosted runner list for linting purposes only.

None of these changes affect:

  • Application source code
  • Test logic or test scenarios
  • E2E test infrastructure (page objects, fixtures, test framework)
  • Any controller, Engine, or component behavior
  • The default CI pipeline behavior (all new flags default to false)

Since no application code is changed and the CI changes only add an optional alternative runner path (defaulting to the existing behavior), there is no need to run any E2E test tags to validate these changes. The changes are purely infrastructure/routing changes for a benchmarking POC.

Performance Test Selection:
No application code, UI components, data loading, or performance-sensitive paths were modified. All changes are CI workflow infrastructure changes (runner routing, environment setup). No performance tests are warranted.

View GitHub Actions results

@sonarqubecloud
Copy link
Copy Markdown

@Qbandev Qbandev added bitrise and removed bitrise labels Apr 16, 2026
@github-project-automation github-project-automation Bot moved this from Needs dev review to Review finalised - Ready to be merged in PR review queue Apr 16, 2026
@Qbandev Qbandev added this pull request to the merge queue Apr 16, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bitrise no-changelog no-changelog Indicates no external facing user changes, therefore no changelog documentation needed release-7.74.0 Issue or pull request that will be included in release 7.74.0 risk-low Low testing needed · Low bug introduction risk size-M team-dev-ops DevOps team

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants