chore(INFRA-3591): add bitrise runners with resource monitoring#29627
chore(INFRA-3591): add bitrise runners with resource monitoring#29627bsgrigorov wants to merge 2 commits intomainfrom
Conversation
|
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. |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ 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.
There was a problem hiding this comment.
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_runnerinput 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.
| use_bitrise_runner: | ||
| description: "Route iOS E2E jobs to Bitrise self-hosted runner group." | ||
| required: false | ||
| type: boolean | ||
| default: false |
| # 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 * * * *" |
| # 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 |
259ccf3 to
280d9b5
Compare
…oring (POC) Co-authored-by: Cursor <cursoragent@cursor.com>
280d9b5 to
bb6eb1e
Compare
…actions Co-authored-by: Cursor <cursoragent@cursor.com>
🔍 Smart E2E Test Selection
click to see 🤖 AI reasoning detailsE2E Test Selection:
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: |
|




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
Docs and [MetaMask Mobile
Coding
Standards](https://github.com/MetaMask/metamask-mobile/blob/main/.github/guid
elines/CODING_GUIDELINES.md).
if applicable
guidelines](https://github.com/MetaMask/metamask-mobile/blob/main/.github/gui
delines/LABELING_GUIDELINES.md)).
Not required for external contributors.
Pre-merge reviewer checklist
app, test code being changed).
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_runneris set.Overview
Adds an opt-in Bitrise runner path for iOS E2E.
run-e2e-smoke-tests-ios.ymland reusablerun-e2e-workflow.ymlnow acceptuse_bitrise_runner; when true, iOS jobs run on thetemp-bitrise-runnersself-hosted group (instead of Cirrus macOS) and run a temporary step that fixes/Users/runnerand toolcache/temp paths for Bitrise’s Vagrant environment.Introduces a temporary Bitrise cache POC workflow. New
temp-bitrise-ios-kv.ymlbuilds the iOS E2E app on Bitrise runners withactions/cachefor Xcode DerivedData and the built.app, with PR gating via abitrise-poclabel and an hourly schedule.CI lint config updated.
.github/actionlint.yamlnow 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.