Skip to content

feat: bound inference capacity replay #634

feat: bound inference capacity replay

feat: bound inference capacity replay #634

name: iOS App PR Build
permissions:
contents: read
on:
pull_request:
branches: [ master ]
jobs:
changes:
uses: ./.github/workflows/app-change-detection.yml
build-ios:
needs: changes
if: ${{ always() && !cancelled() && (needs.changes.result != 'success' || needs.changes.outputs.ios != 'false') }}
runs-on: macos-26-xlarge
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # was v4
with:
persist-credentials: false
# Xcode 26.5 is temporarily exposed as a beta app on macos-26 runners: https://github.com/actions/runner-images/issues/14108
- name: Select Xcode 26.5
id: select_xcode
run: |
set -euo pipefail
for xcode_app in \
/Applications/Xcode_26.5.0.app \
/Applications/Xcode_26.5_beta_2.app \
/Applications/Xcode_26.5_beta.app
do
if [ -x "${xcode_app}/Contents/Developer/usr/bin/xcodebuild" ]; then
sudo xcode-select -s "${xcode_app}/Contents/Developer"
xcode_info="$(xcodebuild -version)"
printf '%s\n' "${xcode_info}"
printf 'version=%s\n' "$(printf '%s\n' "${xcode_info}" | awk '/^Xcode / { print $2; exit }')" >> "${GITHUB_OUTPUT}"
printf 'build=%s\n' "$(printf '%s\n' "${xcode_info}" | awk '/^Build version / { print $3; exit }')" >> "${GITHUB_OUTPUT}"
exit 0
fi
done
echo "Xcode 26.5 is not installed on this runner." >&2
ls -1 /Applications/Xcode*.app >&2 || true
exit 1
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@ef8a148080ab6020fd15196c2084a2eea5ff2d25 # was v22
with:
github-token: ""
- name: Cache Xcode DerivedData and SourcePackages
uses: irgaly/xcode-cache@4141f139f00e335c6e1031fb93e667181f86146f # was v1
with:
key: xcode-cache-ios-xcode26.5-${{ steps.select_xcode.outputs.build }}-${{ github.workflow }}-${{ hashFiles('frontend/src-tauri/Cargo.lock') }}
restore-keys: |
xcode-cache-ios-xcode26.5-${{ steps.select_xcode.outputs.build }}-${{ github.workflow }}-
xcode-cache-ios-xcode26.5-${{ steps.select_xcode.outputs.build }}-
- name: Cache ONNX Runtime iOS artifact
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # was v4
with:
path: |
frontend/src-tauri/onnxruntime-ios
key: pr-onnxruntime-ios-artifact-1.23.2-xcode26.5-${{ steps.select_xcode.outputs.build }}-${{ hashFiles('flake.lock', 'flake.nix', 'scripts/ci/_common.sh', 'scripts/ci/ios-onnxruntime.sh', 'frontend/src-tauri/scripts/build-ios-onnxruntime-all.sh', 'frontend/src-tauri/scripts/canonicalize-static-archive.py', 'frontend/src-tauri/scripts/onnxruntime-pins.sh') }}
restore-keys: |
pr-onnxruntime-ios-artifact-1.23.2-xcode26.5-${{ steps.select_xcode.outputs.build }}-
- name: Prepare ONNX Runtime iOS artifact
run: nix develop --no-update-lock-file .#apple -c ./scripts/ci/ios-onnxruntime.sh
timeout-minutes: 90
- name: Build Tauri iOS App (simulator)
run: nix develop --no-update-lock-file .#apple -c ./scripts/ci/ios-pr.sh
env:
MAPLE_IOS_DOWNLOAD_SIMULATOR_RUNTIME: "1"
timeout-minutes: 90
- name: Upload iOS PR Simulator App
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # was v4
with:
name: maple-ios-simulator-pr
path: |
frontend/src-tauri/gen/apple/build/**/*.app
frontend/src-tauri/target/reproducibility/ios-*.sha256
retention-days: 5