Skip to content

Commit 4951e2a

Browse files
itaybreclaude
andauthored
chore(ci): Move sample app iOS build jobs to GitHub Actions runners (#6356)
* chore(ci): Move sample app iOS build jobs to GitHub Actions macos-26-xlarge Move build-only iOS jobs from Cirrus/Bitrise to GitHub-hosted runners: - sample-application build-ios → macos-26-xlarge - sample-application build-macos → macos-15-xlarge (needs Xcode 16.4) - sample-application-expo build-ios → macos-26-xlarge Remove runner_provider matrix and all Bitrise-specific steps from build jobs. Test jobs (test-ios) remain on Cirrus/Bitrise as they need simulators. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(ci): Move e2e metrics iOS job to GitHub Actions macos-26-xlarge The metrics job only builds perf test apps on the runner — metrics are collected externally via Sauce Labs. No simulator needed, so it can run on GitHub-hosted runners. Remove runner_provider matrix and Bitrise-specific steps from the metrics job. Android metrics remain on Cirrus. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * chore(ci): Move e2e react-native-build iOS job to GitHub Actions runners Map RN 0.71.19 (Xcode 16.4) to macos-15-xlarge and RN 0.86.0 (Xcode 26) to macos-26-xlarge. Remove runner_provider matrix and Bitrise-specific steps from the build job. Android builds remain on Cirrus. Test job (react-native-test) stays on Cirrus/Bitrise as it needs simulators. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent c2e182c commit 4951e2a

3 files changed

Lines changed: 24 additions & 203 deletions

File tree

.github/workflows/e2e-v2.yml

Lines changed: 13 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,7 @@ jobs:
3939
uses: ./.github/workflows/skip-ci-noauth.yml
4040
secrets: inherit
4141
metrics:
42-
runs-on: ${{ matrix.runner_provider == 'bitrise' && fromJSON('["bitrise_pool_name:tahoe"]') || matrix.runs-on }}
43-
continue-on-error: ${{ matrix.runner_provider == 'bitrise' }}
42+
runs-on: ${{ matrix.runs-on }}
4443
needs: [diff_check, detect-changes, auth_token_check]
4544
if: ${{ needs.diff_check.outputs.skip_ci != 'true' && needs.auth_token_check.outputs.skip_ci != 'true' && !startsWith(github.ref, 'refs/heads/release/') }}
4645
env:
@@ -53,14 +52,9 @@ jobs:
5352
matrix:
5453
rn-architecture: ["legacy", "new"]
5554
platform: ["ios", "android"]
56-
runner_provider: ["cirrus", "bitrise"]
5755
include:
5856
- platform: ios
59-
runs-on:
60-
[
61-
"ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0",
62-
"runner_group_id:10",
63-
]
57+
runs-on: macos-26-xlarge
6458
name: iOS
6559
appPlain: performance-tests/test-app-plain.ipa
6660
- platform: android
@@ -71,9 +65,6 @@ jobs:
7165
]
7266
name: Android
7367
appPlain: performance-tests/TestAppPlain/android/app/build/outputs/apk/release/app-release.apk
74-
exclude:
75-
- platform: android
76-
runner_provider: bitrise
7768
steps:
7869
- name: Check if platform is needed
7970
id: platform-check
@@ -126,36 +117,8 @@ jobs:
126117
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}
127118
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6
128119

129-
- name: Setup asdf Node.js (Bitrise)
130-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.runner_provider == 'bitrise' }}
131-
run: |
132-
asdf global nodejs system
133-
corepack enable
134-
135-
- uses: actions/cache@v4
136-
name: Cache Ruby
137-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider != 'bitrise' }}
138-
with:
139-
path: |
140-
~/.rbenv/versions
141-
~/.rbenv/cache
142-
key: ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
143-
144-
- uses: actions/cache@v4
145-
name: Cache Ruby (Bitrise)
146-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider == 'bitrise' }}
147-
with:
148-
path: ~/.asdf/installs/ruby
149-
key: asdf-ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
150-
151-
- name: Install Ruby (Bitrise)
152-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider == 'bitrise' }}
153-
run: |
154-
asdf install ruby 3.3.0
155-
asdf local ruby 3.3.0
156-
157120
- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1
158-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider != 'bitrise' }}
121+
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' }}
159122
with:
160123
ruby-version: "3.3.0"
161124

@@ -258,9 +221,8 @@ jobs:
258221
sauce-key: ${{ secrets.SAUCE_ACCESS_KEY }}
259222

260223
react-native-build:
261-
name: Build RN ${{ matrix.rn-version }} ${{ matrix.rn-architecture }} ${{ matrix.engine }} ${{ matrix.platform }} ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }} on ${{matrix.runner_provider}}
262-
runs-on: ${{ matrix.runner_provider == 'bitrise' && fromJSON(format('["bitrise_pool_name:{0}"]', matrix.macos_version)) || matrix.runs-on }}
263-
continue-on-error: ${{ matrix.runner_provider == 'bitrise' }}
224+
name: Build RN ${{ matrix.rn-version }} ${{ matrix.rn-architecture }} ${{ matrix.engine }} ${{ matrix.platform }} ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }}
225+
runs-on: ${{ matrix.runs-on }}
264226
needs: [diff_check, detect-changes, auth_token_check]
265227
if: ${{ needs.diff_check.outputs.skip_ci != 'true' && needs.auth_token_check.outputs.skip_ci != 'true' && !startsWith(github.ref, 'refs/heads/release/') }}
266228
env:
@@ -279,33 +241,21 @@ jobs:
279241
build-type: ["production"]
280242
ios-use-frameworks: ["no", "static", "dynamic"]
281243
engine: ["hermes"]
282-
runner_provider: ["cirrus", "bitrise"]
283244
include:
284-
# Use Xcode 16 for older RN versions
245+
# Use Xcode 16 (macos-15) for older RN versions
285246
- platform: ios
286247
rn-version: "0.71.19"
287-
runs-on:
288-
[
289-
"ghcr.io/cirruslabs/macos-sequoia-xcode:16.4",
290-
"runner_group_id:10",
291-
]
292-
macos_version: "sequoia"
293-
# Use Xcode 26 for newer RN versions
248+
runs-on: macos-15-xlarge
249+
# Use Xcode 26 (macos-26) for newer RN versions
294250
- platform: ios
295251
rn-version: "0.86.0"
296-
runs-on:
297-
[
298-
"ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0",
299-
"runner_group_id:10",
300-
]
301-
macos_version: tahoe
252+
runs-on: macos-26-xlarge
302253
- platform: android
303254
runs-on:
304255
[
305256
"ghcr.io/cirruslabs/ubuntu-runner-amd64:24.04",
306257
"runner_group_id:10",
307258
]
308-
macos_version: none
309259
exclude:
310260
# exclude all rn versions lower than 0.80.0 for new architecture
311261
- rn-version: "0.71.19"
@@ -325,9 +275,6 @@ jobs:
325275
# exclude new rn architecture and dynamic frameworks
326276
- rn-architecture: "new"
327277
ios-use-frameworks: "dynamic"
328-
# only run bitrise for macOS (iOS) jobs
329-
- platform: "android"
330-
runner_provider: "bitrise"
331278

332279
steps:
333280
- name: Check if platform is needed
@@ -379,12 +326,6 @@ jobs:
379326
cache: "yarn"
380327
cache-dependency-path: yarn.lock
381328

382-
- name: Setup asdf Node.js (Bitrise)
383-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.runner_provider == 'bitrise' }}
384-
run: |
385-
asdf global nodejs system
386-
corepack enable
387-
388329
- name: Install Ninja
389330
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'android' }}
390331
run: sudo apt-get update && sudo apt-get install -y ninja-build
@@ -412,30 +353,8 @@ jobs:
412353
if: ${{ steps.platform-check.outputs.skip != 'true' }}
413354
run: yarn install
414355

415-
- uses: actions/cache@v4
416-
name: Cache Ruby
417-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider != 'bitrise' }}
418-
with:
419-
path: |
420-
~/.rbenv/versions
421-
~/.rbenv/cache
422-
key: ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
423-
424-
- uses: actions/cache@v4
425-
name: Cache Ruby (Bitrise)
426-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider == 'bitrise' }}
427-
with:
428-
path: ~/.asdf/installs/ruby
429-
key: asdf-ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
430-
431-
- name: Install Ruby (Bitrise)
432-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider == 'bitrise' }}
433-
run: |
434-
asdf install ruby 3.3.0
435-
asdf local ruby 3.3.0
436-
437356
- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1
438-
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' && matrix.runner_provider != 'bitrise' }}
357+
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.platform == 'ios' }}
439358
with:
440359
ruby-version: "3.3.0"
441360

@@ -451,15 +370,15 @@ jobs:
451370
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.build-type == 'production' }}
452371
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
453372
with:
454-
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-${{ matrix.runner_provider }}-app-package
373+
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-app-package
455374
path: dev-packages/e2e-tests/RnDiffApp.ap*
456375
retention-days: 1
457376

458377
- name: Upload logs
459378
if: ${{ always() && steps.platform-check.outputs.skip != 'true' }}
460379
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
461380
with:
462-
name: rn-build-logs-${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-${{ matrix.runner_provider }}
381+
name: rn-build-logs-${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}
463382
path: dev-packages/e2e-tests/react-native-versions/${{ matrix.rn-version }}/RnDiffApp/ios/*.log
464383

465384
react-native-test:
@@ -537,7 +456,7 @@ jobs:
537456
if: ${{ steps.platform-check.outputs.skip != 'true' && matrix.build-type == 'production' }}
538457
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
539458
with:
540-
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-${{ matrix.runner_provider }}-app-package
459+
name: ${{ matrix.rn-version }}-${{ matrix.rn-architecture }}-${{ matrix.engine }}-${{ matrix.platform }}-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks }}-app-package
541460
path: dev-packages/e2e-tests
542461

543462
- name: Enable Corepack

.github/workflows/sample-application-expo.yml

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,8 @@ jobs:
3535
caller_ref: ${{ github.ref }}
3636

3737
build-ios:
38-
name: Build ios ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }} on ${{matrix.runner_provider}}
39-
runs-on: ${{ matrix.runner_provider == 'bitrise' && fromJSON('["bitrise_pool_name:tahoe"]') || fromJSON('["ghcr.io/cirruslabs/macos-tahoe-xcode:26.2.0", "runner_group_id:10"]') }}
40-
continue-on-error: ${{ matrix.runner_provider == 'bitrise' }}
38+
name: Build ios ${{ matrix.build-type }} ${{ matrix.ios-use-frameworks }}
39+
runs-on: macos-26-xlarge
4140
needs: [diff_check, detect-changes]
4241
if: >-
4342
${{
@@ -52,7 +51,6 @@ jobs:
5251
matrix:
5352
ios-use-frameworks: ["no-frameworks", "dynamic-frameworks"]
5453
build-type: ["dev", "production"]
55-
runner_provider: ["cirrus", "bitrise"]
5654
steps:
5755
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
5856

@@ -66,37 +64,7 @@ jobs:
6664
cache: "yarn"
6765
cache-dependency-path: yarn.lock
6866

69-
- name: Setup asdf Node.js (Bitrise)
70-
if: matrix.runner_provider == 'bitrise'
71-
run: |
72-
asdf global nodejs system
73-
corepack enable
74-
75-
- uses: actions/cache@v4
76-
name: Cache Ruby
77-
if: matrix.runner_provider != 'bitrise'
78-
with:
79-
path: |
80-
~/.rbenv/versions
81-
~/.rbenv/cache
82-
key: ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
83-
84-
- uses: actions/cache@v4
85-
name: Cache Ruby (Bitrise)
86-
if: matrix.runner_provider == 'bitrise'
87-
with:
88-
path: ~/.asdf/installs/ruby
89-
key: asdf-ruby-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.ruby-version') }}
90-
91-
- name: Install Ruby (Bitrise)
92-
if: matrix.runner_provider == 'bitrise'
93-
working-directory: samples/expo
94-
run: |
95-
asdf install ruby 3.3.0
96-
asdf local ruby 3.3.0
97-
9867
- uses: ruby/setup-ruby@9eb537ca036ebaed86729dcb9309076e4c5c3b74 # v1
99-
if: matrix.runner_provider != 'bitrise'
10068
with:
10169
working-directory: samples/expo
10270
ruby-version: "3.3.0" # based on what is used in the sample
@@ -161,7 +129,7 @@ jobs:
161129
if: ${{ always() }}
162130
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7
163131
with:
164-
name: build-sample-expo-ios-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks}}-${{ matrix.runner_provider }}-logs
132+
name: build-sample-expo-ios-${{ matrix.build-type }}-${{ matrix.ios-use-frameworks}}-logs
165133
path: samples/expo/ios/*.log
166134

167135
build-android:

0 commit comments

Comments
 (0)