Skip to content

refactor(build): migrate to gulp (#2) #10

refactor(build): migrate to gulp (#2)

refactor(build): migrate to gulp (#2) #10

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:
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: 4.6.2
use-dotnet: true
include-templates: true
- name: Setup Xcode version
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable
- name: Install XcodeGen, Task, SCons and MoltenVK
run: brew install xcodegen task scons molten-vk
- name: Download and Prepare Godot Source Headers
run: |
curl -LO https://github.com/godotengine/godot/archive/refs/tags/4.6.2-stable.tar.gz
tar -xzf 4.6.2-stable.tar.gz
mv godot-4.6.2-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/extension/gdextension_interface.gen.h
- 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 XCFramework
run: mise x -- corepack pnpm run build:ios-xcframework
- name: Build integration App
run: mise x -- corepack pnpm 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: Run integration tests
run: |
xcrun simctl install $SIMULATOR_ID dist/integration/ios_debug.app
scripts/run_integration_ios_test.sh ipc_round_trip_probe
scripts/run_integration_ios_test.sh webview_lifecycle_probe
scripts/run_integration_ios_test.sh res_asset_loading_probe