Skip to content

Commit 65fee19

Browse files
authored
ci: optimize tester builds with turbo cache (#181)
1 parent 061ba10 commit 65fee19

1 file changed

Lines changed: 58 additions & 15 deletions

File tree

.github/workflows/ci.yml

Lines changed: 58 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -33,21 +33,13 @@ jobs:
3333
tester-android:
3434
name: Integrated tester Android App
3535
runs-on: ubuntu-latest
36-
needs: build-lint
36+
env:
37+
TURBO_CACHE_DIR: .turbo/android
3738

3839
steps:
3940
- name: Checkout
4041
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6
4142

42-
- name: Validate Gradle Wrapper
43-
uses: gradle/actions/wrapper-validation@6f229686ee4375cc4a86b2514c89bac4930e82c4 # v5
44-
45-
- name: Setup Java
46-
uses: actions/setup-java@5d7b2146334bacf88728daaa70414a99f5164e0f # v5
47-
with:
48-
distribution: 'zulu'
49-
java-version: '17'
50-
5143
- name: Setup Node.js
5244
uses: actions/setup-node@65d868f8d4d85d7d4abb7de0875cde3fcc8798f5 # v6
5345
with:
@@ -60,7 +52,35 @@ jobs:
6052
- name: Build packages
6153
run: yarn build
6254

55+
- name: Cache turborepo for Android
56+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
57+
with:
58+
path: ${{ env.TURBO_CACHE_DIR }}
59+
key: ${{ runner.os }}-turborepo-android-${{ hashFiles('yarn.lock') }}
60+
restore-keys: |
61+
${{ runner.os }}-turborepo-android-
62+
63+
- name: Check turborepo cache for Android
64+
run: |
65+
TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:tester-integrated:android --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:tester-integrated:android').cache.status")
66+
67+
if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
68+
echo "turbo_cache_hit=1" >> $GITHUB_ENV
69+
fi
70+
71+
- name: Validate Gradle Wrapper
72+
if: env.turbo_cache_hit != 1
73+
uses: gradle/actions/wrapper-validation@6f229686ee4375cc4a86b2514c89bac4930e82c4 # v5
74+
75+
- name: Setup Java
76+
if: env.turbo_cache_hit != 1
77+
uses: actions/setup-java@5d7b2146334bacf88728daaa70414a99f5164e0f # v5
78+
with:
79+
distribution: 'zulu'
80+
java-version: '17'
81+
6382
- name: Restore android build cache
83+
if: env.turbo_cache_hit != 1
6484
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
6585
with:
6686
path: |
@@ -71,7 +91,8 @@ jobs:
7191
restore-keys: |
7292
${{ runner.os }}-tester-android-build-
7393
74-
- name: Resture Gradle cache
94+
- name: Restore Gradle cache
95+
if: env.turbo_cache_hit != 1
7596
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
7697
with:
7798
path: |
@@ -82,12 +103,16 @@ jobs:
82103
${{ runner.os }}-tester-integrated-android-gradle-
83104
84105
- name: Build integrated Android tester app
85-
run: yarn run build:tester-integrated:android
106+
env:
107+
JAVA_OPTS: '-XX:MaxHeapSize=6g'
108+
run: |
109+
yarn turbo run build:tester-integrated:android --cache-dir="${{ env.TURBO_CACHE_DIR }}"
86110
87111
tester-ios:
88112
name: Integrated tester iOS App
89-
runs-on: macos-latest
90-
needs: build-lint
113+
runs-on: macos-15
114+
env:
115+
TURBO_CACHE_DIR: .turbo/ios
91116

92117
steps:
93118
- name: Checkout
@@ -116,7 +141,24 @@ jobs:
116141
- name: Build packages
117142
run: yarn build
118143

144+
- name: Cache turborepo for iOS
145+
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
146+
with:
147+
path: ${{ env.TURBO_CACHE_DIR }}
148+
key: ${{ runner.os }}-turborepo-ios-${{ hashFiles('yarn.lock') }}
149+
restore-keys: |
150+
${{ runner.os }}-turborepo-ios-
151+
152+
- name: Check turborepo cache for iOS
153+
run: |
154+
TURBO_CACHE_STATUS=$(node -p "($(yarn turbo run build:tester-integrated:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}" --dry=json)).tasks.find(t => t.task === 'build:tester-integrated:ios').cache.status")
155+
156+
if [[ $TURBO_CACHE_STATUS == "HIT" ]]; then
157+
echo "turbo_cache_hit=1" >> $GITHUB_ENV
158+
fi
159+
119160
- name: Restore Pods cache
161+
if: env.turbo_cache_hit != 1
120162
uses: actions/cache@9255dc7a253b0ccc959486e2bca901246202afeb # v5
121163
with:
122164
path: |
@@ -126,10 +168,11 @@ jobs:
126168
${{ runner.os }}-tester-ios-pods-
127169
128170
- name: Install pods
171+
if: env.turbo_cache_hit != 1
129172
run: |
130173
cd apps/TesterIntegrated/swift
131174
pod install
132175
133176
- name: Build integrated iOS tester app
134177
run: |
135-
yarn run build:tester-integrated:ios
178+
yarn turbo run build:tester-integrated:ios --cache-dir="${{ env.TURBO_CACHE_DIR }}"

0 commit comments

Comments
 (0)