1515 name : Build & static code analysis
1616 runs-on : ubuntu-latest
1717 steps :
18- - name : Checkout
19- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
20-
2118 - name : Setup
2219 uses : ./.github/actions/setup
2320
@@ -30,74 +27,50 @@ jobs:
3027 - name : Typecheck files
3128 run : yarn typecheck
3229
33- - name : Test Brownfield CLI
30+ - name : Test Brownfield CLI (version)
3431 run : |
3532 yarn workspace @callstack/react-native-brownfield brownfield --version
3633
3734 android :
38- name : ' Android: integrated tester & integration workflow with CLI '
35+ name : Android road tests
3936 runs-on : ubuntu-latest
4037 needs : build-lint
4138
4239 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'
72-
73- - name : Install dependencies
74- run : yarn install
40+ - name : Setup
41+ uses : ./.github/actions/setup
7542
76- - name : Build packages
77- run : yarn build
43+ - name : Prepare Android environment
44+ uses : ./.github/actions/prepare-android
7845
79- - name : Restore android build cache
46+ - name : Restore Android build cache
8047 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
8148 with :
8249 path : |
8350 apps/TesterIntegrated/kotlin/build
8451 apps/TesterIntegrated/kotlin/app/.cxx
8552 apps/TesterIntegrated/kotlin/app/build
86- key : ${{ runner.os }}-tester-android-build-${{ github.sha }}
53+ apps/RNApp/android/build
54+ apps/RNApp/android/app/.cxx
55+ apps/RNApp/android/app/build
56+ apps/AndroidApp/build
57+ apps/AndroidApp/app/build
58+ apps/AndroidApp/app/.cxx
59+ key : ${{ runner.os }}-android-build-road-tests-${{ github.sha }}
8760 restore-keys : |
88- ${{ runner.os }}-tester- android-build-
61+ ${{ runner.os }}-android-build-road-tests -
8962
9063 - name : Restore Gradle cache
9164 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
9265 with :
9366 path : |
9467 ~/.gradle/caches
9568 ~/.gradle/wrapper
96- key : ${{ runner.os }}-tester-integrated- android-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
69+ key : ${{ runner.os }}-android-ci -gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
9770 restore-keys : |
98- ${{ runner.os }}-tester-integrated- android-gradle-
71+ ${{ runner.os }}-android-ci -gradle-
9972
100- # == IntegratedTester ==
73+ # == TesterIntegrated ==
10174
10275 - name : Generate Brownie stores
10376 run : yarn run brownfield:codegen
@@ -130,59 +103,77 @@ jobs:
130103 yarn run build:example:android-consumer
131104
132105 ios :
133- name : Integrated tester iOS App
134- runs-on : macos-latest
106+ name : iOS road tests
107+ runs-on : macos-26
135108 needs : build-lint
136109
110+ env :
111+ USE_CCACHE : 1
112+ CCACHE_DIR : ${{ github.workspace }}/.ios_ccache
113+ CCACHE_BASEDIR : ${{ github.workspace }}
114+ CCACHE_COMPRESS : ' 1'
115+
137116 steps :
138- - name : Checkout
139- uses : actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
117+ - name : Setup
118+ uses : ./.github/ actions/setup
140119
141- - name : Use appropriate Xcode version
142- uses : maxim-lobanov/setup-xcode@60606e260d2fc5762a71e64e74b2174e8ea3c8bd # v1.6.0
143- with :
144- xcode-version : ' 16'
120+ - name : Prepare iOS environment
121+ uses : ./.github/actions/prepare-ios
145122
146- - name : Setup Node.js
147- uses : actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
148- with :
149- node-version : ' lts/*'
150- cache : ' yarn'
123+ - name : Install ccache
124+ run : brew install ccache
151125
152- - name : Setup Ruby
153- uses : ruby/setup-ruby@5dd816ae0186f20dfa905997a64104db9a8221c7 # v1.280.0
154- with :
155- ruby-version : ' 3.2'
156- bundler-cache : true
126+ - name : Enable ccache
127+ run : echo "$(brew --prefix)/opt/ccache/libexec" >> $GITHUB_PATH
157128
158- - name : Install dependencies
159- run : yarn install
129+ - name : Restore TesterIntegrated ccache
130+ uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
131+ with :
132+ path : |
133+ .ios_ccache
134+ key : ${{ runner.os }}-tester-integrated-ios-ccache-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock', 'apps/TesterIntegrated/swift/SwiftExample.xcodeproj/project.pbxproj') }}
135+ restore-keys : |
136+ ${{ runner.os }}-tester-integrated-ios-ccache-
160137
161- - name : Build packages
162- run : yarn build
138+ # == TesterIntegrated ==
163139
164- - name : Restore Pods cache
140+ - name : Restore Pods cache (TesterIntegrated)
165141 uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
166142 with :
167143 path : |
168144 apps/TesterIntegrated/swift/Pods
169- key : ${{ runner.os }}-tester-ios-pods-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock') }}
145+ key : ${{ runner.os }}-tester-integrated- ios-pods-${{ hashFiles('apps/TesterIntegrated/swift/Podfile.lock') }}
170146 restore-keys : |
171- ${{ runner.os }}-tester-ios-pods-
147+ ${{ runner.os }}-tester-integrated- ios-pods-
172148
173- - name : Install pods
149+ - name : Install pods (TesterIntegrated)
174150 run : |
175151 cd apps/TesterIntegrated/swift
176152 pod install
177153
178- # == IntegratedTester ==
154+ - name : Restore DerivedData cache
155+ uses : actions/cache@v5
156+ with :
157+ path : apps/TesterIntegrated/swift/build
158+ key : ${{ runner.os }}-ios-tester-integrated-derived-data-${{ hashFiles('**/Podfile.lock', '**/Gemfile.lock', '**/package.json', '**/bun.lockb') }}
159+ restore-keys : |
160+ ${{ runner.os }}-ios-tester-integrated-derived-data-
179161
180162 - name : Build integrated iOS tester app
181163 run : |
182164 yarn run build:tester-integrated:ios
183165
184166 # == RNApp ==
185167
168+ - name : Restore Pods cache (RNApp)
169+ uses : actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
170+ with :
171+ path : |
172+ apps/RNApp/ios/Pods
173+ key : ${{ runner.os }}-rnapp-ios-pods-${{ hashFiles('apps/RNApp/ios/Podfile.lock') }}
174+ restore-keys : |
175+ ${{ runner.os }}-rnapp-ios-pods-
176+
186177 - name : Install pods (RNApp)
187178 run : |
188179 cd apps/RNApp/ios
@@ -198,3 +189,8 @@ jobs:
198189 - name : Build Brownfield iOS native app
199190 run : |
200191 yarn run build:example:ios-consumer
192+
193+ # ==============
194+
195+ - name : Report ccache usage
196+ run : ccache -s
0 commit comments