Skip to content

chore(INFRA-3591): add bitrise runners with resource monitoring#29627

Closed
bsgrigorov wants to merge 2 commits intomainfrom
chore/INFRA-3591-bitrise-runners-monitoring
Closed

chore(INFRA-3591): add bitrise runners with resource monitoring#29627
bsgrigorov wants to merge 2 commits intomainfrom
chore/INFRA-3591-bitrise-runners-monitoring

Conversation

@bsgrigorov
Copy link
Copy Markdown
Contributor

@bsgrigorov bsgrigorov commented May 1, 2026

Description

Added Bitrise runners that we will use with some monitoring scripts to asses performance of the self hosted runners.

Changelog

CHANGELOG entry: null

Related issues

Fixes:

Manual testing steps

Screenshots/Recordings

Before

After

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.

Note

Medium Risk
Changes CI execution environment selection for iOS E2E jobs (new optional Bitrise runner routing and path fixes), which could impact workflow reliability when enabled. Default behavior remains unchanged unless use_bitrise_runner is set.

Overview
Adds an opt-in Bitrise runner path for iOS E2E. run-e2e-smoke-tests-ios.yml and reusable run-e2e-workflow.yml now accept use_bitrise_runner; when true, iOS jobs run on the temp-bitrise-runners self-hosted group (instead of Cirrus macOS) and run a temporary step that fixes /Users/runner and toolcache/temp paths for Bitrise’s Vagrant environment.

Introduces a temporary Bitrise cache POC workflow. New temp-bitrise-ios-kv.yml builds the iOS E2E app on Bitrise runners with actions/cache for Xcode DerivedData and the built .app, with PR gating via a bitrise-poc label and an hourly schedule.

CI lint config updated. .github/actionlint.yaml now allowlists Bitrise runner pool labels used by the new runner configuration.

Reviewed by Cursor Bugbot for commit 271011a. Bugbot is set up for automated code reviews on this repo. Configure here.

@bsgrigorov bsgrigorov requested review from a team as code owners May 1, 2026 18:37
@bsgrigorov bsgrigorov self-assigned this May 1, 2026
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 1, 2026

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 1, 2026
@github-actions github-actions Bot added the size-M label May 1, 2026
Copy link
Copy Markdown
Contributor

@cursor cursor Bot left a comment

Choose a reason for hiding this comment

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

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 259ccf3. Configure here.

Comment thread .github/workflows/run-e2e-smoke-tests-ios.yml
Comment thread .github/workflows/temp-bitrise-ios-kv.yml Outdated
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 temporary Bitrise self-hosted runner support for iOS E2E benchmarking/monitoring and wires an opt-in flag through the reusable E2E workflow stack.

Changes:

  • Introduces a temporary scheduled Bitrise iOS E2E POC workflow that builds and uploads an iOS simulator app artifact.
  • Adds a use_bitrise_runner input to route iOS E2E runs onto a Bitrise runner group (including a Vagrant path workaround).
  • Updates actionlint config to recognize new Bitrise runner labels.

Reviewed changes

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

File Description
.github/workflows/temp-bitrise-ios-e2e.yml New temporary Bitrise benchmarking workflow (build, cache restore, artifact upload, diagnostics).
.github/workflows/run-e2e-workflow.yml Adds use_bitrise_runner input, conditional Bitrise runner routing, and Vagrant path fix step.
.github/workflows/run-e2e-smoke-tests-ios.yml Threads use_bitrise_runner into many (but currently not all) smoke suite calls to the reusable E2E workflow.
.github/actionlint.yaml Adds Bitrise runner label strings so actionlint accepts the new runs-on labels.

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

Comment on lines +16 to +20
use_bitrise_runner:
description: "Route iOS E2E jobs to Bitrise self-hosted runner group."
required: false
type: boolean
default: false
Comment on lines +7 to +15
# Triggers: workflow_dispatch (Actions tab — pick branch under "Use workflow from"),
# pull_request (label bitrise-poc), and hourly schedule.

on:
workflow_dispatch:
pull_request:
types: [ labeled, synchronize ]
schedule:
- cron: "0 * * * *"
Comment on lines +110 to +136
# TEMPORARY: Bitrise runners use Vagrant (user=vagrant, HOME=/Users/vagrant).
# GitHub Actions tools hardcode /Users/runner paths, so create the symlink.
- name: Fix Vagrant environment paths (Bitrise runners)
if: ${{ inputs.use_bitrise_runner && inputs.platform == 'ios' }}
run: |
if [ -L /Users/runner ]; then
current_target="$(readlink /Users/runner)"
if [ "$current_target" = "/Users/vagrant" ]; then
echo "Symlink already correct: /Users/runner -> /Users/vagrant"
else
echo "Replacing incorrect symlink /Users/runner -> $current_target"
sudo rm /Users/runner
sudo ln -s /Users/vagrant /Users/runner
echo "Recreated symlink: /Users/runner -> /Users/vagrant"
fi
elif [ -e /Users/runner ]; then
echo "Error: /Users/runner exists but is not a symlink"
ls -ld /Users/runner
exit 1
else
sudo ln -s /Users/vagrant /Users/runner
echo "Created symlink /Users/runner -> /Users/vagrant"
fi
mkdir -p "$HOME/hostedtoolcache" "$HOME/tmp"
echo "RUNNER_TOOL_CACHE=$HOME/hostedtoolcache" >> "$GITHUB_ENV"
echo "RUNNER_TEMP=$HOME/tmp" >> "$GITHUB_ENV"
shell: bash
XxdpavelxX
XxdpavelxX previously approved these changes May 1, 2026
jake-perkins
jake-perkins previously approved these changes May 1, 2026
@bsgrigorov bsgrigorov dismissed stale reviews from jake-perkins and XxdpavelxX via 280d9b5 May 5, 2026 22:20
@bsgrigorov bsgrigorov force-pushed the chore/INFRA-3591-bitrise-runners-monitoring branch from 259ccf3 to 280d9b5 Compare May 5, 2026 22:20
…oring (POC)

Co-authored-by: Cursor <cursoragent@cursor.com>
@bsgrigorov bsgrigorov force-pushed the chore/INFRA-3591-bitrise-runners-monitoring branch from 280d9b5 to bb6eb1e Compare May 5, 2026 22:32
…actions

Co-authored-by: Cursor <cursoragent@cursor.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 5, 2026

🔍 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 purely CI/infrastructure changes with zero application code impact:

  1. run-e2e-smoke-tests-ios.yml: Adds 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 use_bitrise_runner input and conditionally routes iOS jobs to Bitrise self-hosted runners. Also adds a Vagrant path fix step that only runs when use_bitrise_runner=true on iOS. Default behavior (false) is unchanged.

  3. temp-bitrise-ios-kv.yml: A new TEMPORARY workflow (INFRA-3591 POC) for testing KV cache on Bitrise runners. Explicitly marked as "not part of the CI gate." The E2E smoke test section is commented out — it only builds the iOS app artifact. This workflow is triggered by workflow_dispatch, pull_request with bitrise-poc label, or hourly schedule — not by normal PR CI.

  4. actionlint.yaml: Adds Bitrise runner pool labels to the linter allowlist to prevent false positives.

No application source code, test specs, page objects, fixtures, or test framework files were modified. The changes are purely about CI runner routing infrastructure. Running E2E tests would not validate these CI changes (they test app functionality, not CI runner configuration). No performance impact either.

Performance Test Selection:
No application code, UI components, state management, or performance-sensitive paths were modified. These are purely CI infrastructure changes affecting runner routing and build caching configuration. No performance test coverage is warranted.

View GitHub Actions results

@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented May 5, 2026

@bsgrigorov bsgrigorov closed this May 6, 2026
@github-actions github-actions Bot locked and limited conversation to collaborators May 6, 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.

4 participants