Skip to content

Build iOS App

Build iOS App #18

Workflow file for this run

name: Build iOS App
on:
# Called by release-please when a new version is released
workflow_call:
# Manual trigger for testing
workflow_dispatch:
jobs:
build:
runs-on: macos-latest
env:
BUNDLE_FROZEN: "true"
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: '3.4.8'
bundler-cache: true
- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: '24'
cache: 'npm'
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: aarch64-apple-ios,aarch64-apple-ios-sim,x86_64-apple-ios
- name: Cache Rust
uses: Swatinem/rust-cache@v2
with:
workspaces: src-tauri -> target
cache-targets: true
cache-on-failure: true
- name: Install Tauri iOS dependencies
run: |
brew install xcodegen libimobiledevice
# Ensure binaries are linked and in PATH for Tauri
brew link --overwrite xcodegen libimobiledevice 2>/dev/null || true
- name: Install npm dependencies
run: npm ci
# TODO: test ci w/o this step
# - name: Initialize Tauri iOS project
# run: npx tauri ios init
# working-directory: src-tauri
- name: Build and upload to TestFlight
run: bundle exec fastlane beta
env:
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
AWS_ENDPOINT_URL: ${{ secrets.AWS_ENDPOINT_URL }}
MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}