-
Notifications
You must be signed in to change notification settings - Fork 2
132 lines (106 loc) · 4.19 KB
/
Copy pathplatform-integration-ios.yml
File metadata and controls
132 lines (106 loc) · 4.19 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
name: iOS Platform Integration
on:
pull_request:
push:
branches:
- main
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
ios:
name: iOS
runs-on: macos-latest
env:
GODOT_VERSION: 4.6.2
HOMEBREW_NO_AUTO_UPDATE: "1"
HOMEBREW_NO_INSTALL_CLEANUP: "1"
MISE_EXEC_AUTO_INSTALL: "false"
MISE_NOT_FOUND_AUTO_INSTALL: "false"
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Node
uses: jdx/mise-action@v3
with:
install: true
install_args: node
cache: true
- name: Setup Godot
uses: chickensoft-games/setup-godot@v2
with:
version: ${{ env.GODOT_VERSION }}
use-dotnet: true
include-templates: true
- name: Setup Xcode version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Get Xcode version
id: xcode
run: |
xcodebuild -version
echo "version=$(xcodebuild -version | tr ' \n' '--')" >> "$GITHUB_OUTPUT"
- name: Install XcodeGen, SCons and MoltenVK
run: brew install xcodegen scons molten-vk
- name: Download and Prepare Godot Source Headers
run: |
rm -rf godot "${GODOT_VERSION}-stable.tar.gz" "godot-${GODOT_VERSION}-stable"
curl -LO "https://github.com/godotengine/godot/archive/refs/tags/${GODOT_VERSION}-stable.tar.gz"
tar -xzf "${GODOT_VERSION}-stable.tar.gz"
mv "godot-${GODOT_VERSION}-stable" godot
cd godot
MOLTENVK_PATH="$(brew --prefix molten-vk)"
echo "Using MoltenVK from: ${MOLTENVK_PATH}"
scons platform=macos target=editor \
vulkan_sdk_path="${MOLTENVK_PATH}" \
core/version_generated.gen.h \
core/disabled_classes.gen.h \
core/extension/gdextension_interface.gen.h
- name: Cache Godot iOS simulator template
uses: actions/cache@v5
with:
path: godot/bin/libgodot.ios.template_debug.arm64.simulator.a
key: ${{ runner.os }}-${{ runner.arch }}-godot-${{ env.GODOT_VERSION }}-${{ steps.xcode.outputs.version }}-ios-template_debug-arm64-simulator
- name: Enable Corepack
run: mise x -- corepack enable pnpm
- name: Get pnpm store path
id: pnpm-store
run: echo "path=$(mise x -- corepack pnpm store path --silent)" >> "$GITHUB_OUTPUT"
- name: Cache pnpm store
uses: actions/cache@v5
with:
path: ${{ steps.pnpm-store.outputs.path }}
key: ${{ runner.os }}-${{ runner.arch }}-pnpm-store-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-pnpm-store-
- name: Install pnpm dependencies
run: mise x -- corepack pnpm install --frozen-lockfile
- name: Build iOS debug XCFramework
run: mise run build:ios-debug-xcframework
- name: Build integration App
run: mise run build:integration-ios
- name: Start iOS Simulator
run: |
DEVICE_ID=$(xcrun simctl list devices available | grep -m 1 "iPhone 16" | awk -F '[()]' '{print $2}')
echo "Booting device ID: $DEVICE_ID"
xcrun simctl boot "$DEVICE_ID"
xcrun simctl bootstatus "$DEVICE_ID"
echo "SIMULATOR_ID=$DEVICE_ID" >> $GITHUB_ENV
- name: Install integration app
run: xcrun simctl install $SIMULATOR_ID dist/integration/ios_debug.app
- name: Pre-warm WebKit processes
run: |
BUNDLE_ID="$(/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' dist/integration/ios_debug.app/Info.plist)"
xcrun simctl launch "${SIMULATOR_ID}" "${BUNDLE_ID}" >/dev/null 2>&1 || true
sleep 35
xcrun simctl terminate "${SIMULATOR_ID}" "${BUNDLE_ID}" >/dev/null 2>&1 || true
sleep 2
- name: Run integration tests
timeout-minutes: 8
run: |
mise run test:integration-ios -- ipc_round_trip_probe
mise run test:integration-ios -- webview_lifecycle_probe
mise run test:integration-ios -- res_asset_loading_probe