@@ -10,14 +10,17 @@ concurrency:
1010 group : pr-${{ github.event.pull_request.number }}
1111 cancel-in-progress : true
1212
13+ ios_env : &ios_env
14+ USE_CCACHE : 1
15+ CCACHE_DIR : ${{ github.workspace }}/.ios_ccache
16+ CCACHE_BASEDIR : ${{ github.workspace }}
17+ CCACHE_COMPRESS : ' 1'
18+
1319jobs :
1420 build-lint :
1521 name : Build & static code analysis
1622 runs-on : ubuntu-latest
1723 steps :
18- - name : Checkout
19- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
20-
2124 - name : Setup
2225 uses : ./.github/actions/setup
2326
@@ -30,74 +33,50 @@ jobs:
3033 - name : Typecheck files
3134 run : yarn typecheck
3235
33- - name : Test Brownfield CLI
36+ - name : Test Brownfield CLI (version)
3437 run : |
3538 yarn workspace @callstack/react-native-brownfield brownfield --version
3639
3740 android :
38- name : ' Android: integrated tester & integration workflow with CLI '
41+ name : Android road tests
3942 runs-on : ubuntu-latest
4043 needs : build-lint
4144
4245 steps :
43- - name : Checkout
44- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
45-
46- - name : Validate Gradle Wrapper
47- uses : gradle/actions/wrapper-validation@6f229686ee4375cc4a86b2514c89bac4930e82c4 # v5
48-
49- - name : Setup Java
50- uses : actions/setup-java@5d7b2146334bacf88728daaa70414a99f5164e0f # v5
51- with :
52- distribution : ' zulu'
53- java-version : ' 17'
54-
55- - name : Free Disk Space (Ubuntu)
56- uses : jlumbroso/free-disk-space@54081f138730dfa15788a46383842cd2f914a1be # v1.3.1
57- with :
58- tool-cache : false
59-
60- android : false
61- dotnet : true
62- haskell : true
63- large-packages : true
64- docker-images : true
65- swap-storage : true
66-
67- - name : Setup Node.js
68- uses : actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
69- with :
70- node-version : ' lts/*'
71- cache : ' yarn'
46+ - name : Setup
47+ uses : ./.github/actions/setup
7248
73- - name : Install dependencies
74- run : yarn install
49+ - name : Prepare Android environment
50+ uses : ./.github/actions/prepare-android
7551
76- - name : Build packages
77- run : yarn build
78-
79- - name : Restore android build cache
52+ - name : Restore Android build cache
8053 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
8154 with :
8255 path : |
8356 apps/TesterIntegrated/kotlin/build
8457 apps/TesterIntegrated/kotlin/app/.cxx
8558 apps/TesterIntegrated/kotlin/app/build
86- key : ${{ runner.os }}-tester-android-build-${{ github.sha }}
59+ apps/RNApp/android/build
60+ apps/RNApp/android/app/.cxx
61+ apps/RNApp/android/app/build
62+ apps/AndroidApp/build
63+ apps/AndroidApp/app/build
64+ apps/AndroidApp/app/.cxx
65+ key : ${{ runner.os }}-android-build-road-tests-${{ github.sha }}
8766 restore-keys : |
88- ${{ runner.os }}-tester- android-build-
67+ ${{ runner.os }}-android-build-road-tests -
8968
9069 - name : Restore Gradle cache
9170 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
9271 with :
9372 path : |
9473 ~/.gradle/caches
9574 ~/.gradle/wrapper
96- key : ${{ runner.os }}-tester-integrated- android-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
75+ key : ${{ runner.os }}-android-ci -gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
9776 restore-keys : |
98- ${{ runner.os }}-tester-integrated- android-gradle-
77+ ${{ runner.os }}-android-ci -gradle-
9978
100- # == IntegratedTester ==
79+ # == TesterIntegrated ==
10180
10281 - name : Generate Brownie stores
10382 run : yarn run brownfield:codegen
@@ -130,59 +109,73 @@ jobs:
130109 yarn run build:example:android-consumer
131110
132111 ios :
133- name : Integrated tester iOS App
134- runs-on : macos-latest
112+ name : iOS road tests
113+ runs-on : macos-26
135114 needs : build-lint
136115
116+ env : *ios_env
117+
137118 steps :
138- - name : Checkout
139- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
119+ - name : Setup
120+ uses : ./.github/ actions/setup
140121
141- - name : Use appropriate Xcode version
142- uses : maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
143- with :
144- xcode-version : ' 16'
122+ - name : Prepare iOS environment
123+ uses : ./.github/actions/prepare-ios
145124
146- - name : Setup Node.js
147- uses : actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
148- with :
149- node-version : ' lts/*'
150- cache : ' yarn'
125+ - name : Install ccache
126+ run : brew install ccache
151127
152- - name : Setup Ruby
153- uses : ruby/setup-ruby@5dd816ae0186f20dfa905997a64104db9a8221c7 # v1.280.0
154- with :
155- ruby-version : ' 3.2'
156- bundler-cache : true
128+ - name : Enable ccache
129+ run : echo "$(brew --prefix)/opt/ccache/libexec" >> $GITHUB_PATH
157130
158- - name : Install dependencies
159- run : yarn install
131+ - name : Restore TesterIntegrated ccache
132+ uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
133+ with :
134+ path : |
135+ .ios_ccache
136+ key : ${{ runner.os }}-tester-integrated-ios-ccache-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock', 'apps/TesterIntegrated/swift/SwiftExample.xcodeproj/project.pbxproj') }}
137+ restore-keys : |
138+ ${{ runner.os }}-tester-integrated-ios-ccache-
160139
161- - name : Build packages
162- run : yarn build
140+ # == TesterIntegrated ==
163141
164- - name : Restore Pods cache
142+ - name : Restore Pods cache (TesterIntegrated)
165143 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
166144 with :
167145 path : |
168146 apps/TesterIntegrated/swift/Pods
169- key : ${{ runner.os }}-tester-ios-pods-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock') }}
147+ key : ${{ runner.os }}-tester-integrated- ios-pods-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock') }}
170148 restore-keys : |
171- ${{ runner.os }}-tester-ios-pods-
149+ ${{ runner.os }}-tester-integrated- ios-pods-
172150
173- - name : Install pods
151+ - name : Install pods (TesterIntegrated)
174152 run : |
175153 cd apps/TesterIntegrated/swift
176154 pod install
177155
178- # == IntegratedTester ==
156+ - name : Restore DerivedData cache
157+ uses : actions/cache@v5
158+ with :
159+ path : apps/TesterIntegrated/swift/build
160+ key : ${{ runner.os }}-ios-tester-integrated-derived-data-${{ hashFiles('**/Podfile.lock', '**/Gemfile.lock', '**/package.json', '**/bun.lockb') }}
161+ restore-keys : |
162+ ${{ runner.os }}-ios-tester-integrated-derived-data-
179163
180164 - name : Build integrated iOS tester app
181165 run : |
182166 yarn run build:tester-integrated:ios
183167
184168 # == RNApp ==
185169
170+ - name : Restore Pods cache (RNApp)
171+ uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
172+ with :
173+ path : |
174+ apps/RNApp/ios/Pods
175+ key : ${{ runner.os }}-rnapp-ios-pods-${{ hashFiles('apps/RNApp/ios/Podfile.lock') }}
176+ restore-keys : |
177+ ${{ runner.os }}-rnapp-ios-pods-
178+
186179 - name : Install pods (RNApp)
187180 run : |
188181 cd apps/RNApp/ios
@@ -198,3 +191,8 @@ jobs:
198191 - name : Build Brownfield iOS native app
199192 run : |
200193 yarn run build:example:ios-consumer
194+
195+ # ==============
196+
197+ - name : Report ccache usage
198+ run : ccache -s
0 commit comments