-
-
Notifications
You must be signed in to change notification settings - Fork 90
183 lines (165 loc) 路 5.57 KB
/
Copy pathharness-ios.yml
File metadata and controls
183 lines (165 loc) 路 5.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
name: Harness iOS
concurrency:
group: harness-ios-${{ github.ref }}
cancel-in-progress: ${{ github.ref_name != 'main' }}
on:
workflow_dispatch:
inputs:
device_model:
description: "iOS Simulator device model"
required: false
default: "iPhone 17 Pro"
type: string
ios_version:
description: "iOS version"
required: false
default: "26.2"
type: string
xcode_version:
description: "Xcode version"
required: false
default: "26.2.0"
type: string
push:
branches:
- main
paths:
- ".github/workflows/harness-ios.yml"
- "android/**"
- "cpp/**"
- "ios/**"
- "src/**"
- "nitrogen/**"
- "nitro.json"
- "*.podspec"
- "package.json"
- "react-native.config.js"
- "example/ios/**"
- "example/react-native.config.js"
- "example/metro.config.js"
- "example/package.json"
- "example/src/**"
- "example/__tests__/**"
- "example/rn-harness.config.mjs"
- "example/jest.harness.config.mjs"
- "**/Podfile.lock"
- "**/yarn.lock"
- "**/package-lock.json"
- "**/bun.lock"
pull_request:
paths:
- ".github/workflows/harness-ios.yml"
- "android/**"
- "cpp/**"
- "ios/**"
- "src/**"
- "nitrogen/**"
- "nitro.json"
- "*.podspec"
- "package.json"
- "react-native.config.js"
- "example/ios/**"
- "example/react-native.config.js"
- "example/metro.config.js"
- "example/package.json"
- "example/src/**"
- "example/__tests__/**"
- "example/rn-harness.config.mjs"
- "example/jest.harness.config.mjs"
- "**/Podfile.lock"
- "**/yarn.lock"
- "**/package-lock.json"
- "**/bun.lock"
env:
DEVICE_MODEL: ${{ github.event.inputs.device_model || 'iPhone 17 Pro' }}
IOS_VERSION: ${{ github.event.inputs.ios_version || '26.2' }}
XCODE_VERSION: ${{ github.event.inputs.xcode_version || '26.2.0' }}
USE_CCACHE: 1
DEVELOPER_DIR: /Applications/Xcode_${{ github.event.inputs.xcode_version || '26.2.0' }}.app/Contents/Developer
jobs:
harness_ios:
name: Harness iOS
runs-on: macOS-26
steps:
- uses: actions/checkout@v7
with:
fetch-depth: 1
submodules: recursive
- uses: actions/setup-node@v4
with:
node-version: 22
cache: yarn
cache-dependency-path: example/yarn.lock
- name: Enable Yarn classic (matches packageManager)
run: corepack enable && corepack prepare yarn@1.22.19 --activate
- name: Install example dependencies
run: yarn install --frozen-lockfile
working-directory: example
- name: Install Ccache
uses: hendrikmuhs/ccache-action@v1.2
with:
max-size: 1.5G
key: ${{ runner.os }}-ccache-fasttflite-ios
create-symlink: true
- name: Setup ccache behavior
run: |
echo "CCACHE_SLOPPINESS=clang_index_store,file_stat_matches,include_file_ctime,include_file_mtime,ivfsoverlay,pch_defines,modules,system_headers,time_macros" >> $GITHUB_ENV
echo "CCACHE_FILECLONE=true" >> $GITHUB_ENV
echo "CCACHE_DEPEND=true" >> $GITHUB_ENV
echo "CCACHE_INODECACHE=true" >> $GITHUB_ENV
- name: Setup Ruby (bundle)
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.2.0
bundler-cache: true
working-directory: example
- name: Select Xcode ${{ env.XCODE_VERSION }}
run: sudo xcode-select -s "/Applications/Xcode_${{ env.XCODE_VERSION }}.app/Contents/Developer"
- name: Restore Pods cache
uses: actions/cache@v4
with:
path: example/ios/Pods
key: ${{ runner.os }}-pods-fasttflite-${{ hashFiles('**/Podfile.lock', '**/Gemfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-fasttflite-
- name: Install Pods
working-directory: example
run: bundle exec pod install --project-directory=ios
- name: Restore DerivedData cache
uses: actions/cache@v4
with:
path: example/ios/build
key: ${{ runner.os }}-dd-fasttflite-${{ hashFiles('**/Podfile.lock', '**/Gemfile.lock', '**/package.json', '**/bun.lock') }}-xcode${{ env.XCODE_VERSION }}
restore-keys: |
${{ runner.os }}-dd-fasttflite-
- name: Build iOS app
working-directory: example/ios
run: |
set -o pipefail
xcodebuild \
CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++ \
-derivedDataPath build -UseModernBuildSystem=YES \
-workspace TfliteExample.xcworkspace \
-scheme TfliteExample \
-sdk iphonesimulator \
-configuration Debug \
-destination 'platform=iOS Simulator,name=${{ env.DEVICE_MODEL }}' \
-showBuildTimingSummary \
ONLY_ACTIVE_ARCH=YES \
build \
CODE_SIGNING_ALLOWED=NO | xcbeautify --renderer github-actions
- name: Setup iOS Simulator
uses: futureware-tech/simulator-action@v5
with:
model: ${{ env.DEVICE_MODEL }}
os: iOS
os_version: ${{ env.IOS_VERSION }}
wait_for_boot: true
erase_before_boot: false
- name: Install app
run: |
xcrun simctl install booted example/ios/build/Build/Products/Debug-iphonesimulator/TfliteExample.app
- name: Run Harness E2E tests
working-directory: example
run: |
yarn test:harness --harnessRunner ios