From d5a7d80f56296299c3fbcae6cdaaa584f686bd28 Mon Sep 17 00:00:00 2001 From: Evan Taylor Date: Thu, 16 Apr 2026 15:49:12 -0700 Subject: [PATCH 1/2] feat: add ci/cd for builds --- .github/workflows/ios-release-dev.yml | 50 +++++++++++++++++++++++++ .github/workflows/ios-release-main.yml | 51 ++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 .github/workflows/ios-release-dev.yml create mode 100644 .github/workflows/ios-release-main.yml diff --git a/.github/workflows/ios-release-dev.yml b/.github/workflows/ios-release-dev.yml new file mode 100644 index 0000000..b8b1d81 --- /dev/null +++ b/.github/workflows/ios-release-dev.yml @@ -0,0 +1,50 @@ +name: iOS TestFlight (manual) + +on: + workflow_dispatch: + +concurrency: + group: ios-release-manual-${{ github.ref }} + cancel-in-progress: false + +jobs: + build-and-submit: + name: Build and submit iOS + runs-on: macos-latest + timeout-minutes: 90 + + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version: '20.19.4' + cache: 'npm' + + - name: Setup Expo and EAS + uses: expo/expo-github-action@v8 + with: + eas-version: latest + token: ${{ secrets.EXPO_TOKEN }} + + - name: Install dependencies + run: npm ci --include=optional + + - name: Build iOS (local) + working-directory: frontend + run: eas build --platform ios --profile production --local --non-interactive --output=${{ github.workspace }}/build.ipa + + - name: Submit to TestFlight + working-directory: frontend + run: eas submit --platform ios --profile production --path ${{ github.workspace }}/build.ipa --non-interactive + + - name: Upload IPA artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: ios-build-${{ github.ref_name }}-${{ github.sha }} + path: ${{ github.workspace }}/build.ipa + if-no-files-found: ignore + retention-days: 14 diff --git a/.github/workflows/ios-release-main.yml b/.github/workflows/ios-release-main.yml new file mode 100644 index 0000000..a3f6a98 --- /dev/null +++ b/.github/workflows/ios-release-main.yml @@ -0,0 +1,51 @@ +name: iOS TestFlight (main) + +on: + push: + branches: [main] + +concurrency: + group: ios-release-main + cancel-in-progress: false + +jobs: + build-and-submit: + name: Build and submit iOS + runs-on: macos-latest + timeout-minutes: 90 + + steps: + - name: Checkout + uses: actions/checkout@v5 + + - name: Setup Node.js + uses: actions/setup-node@v5 + with: + node-version: '20.19.4' + cache: 'npm' + + - name: Setup Expo and EAS + uses: expo/expo-github-action@v8 + with: + eas-version: latest + token: ${{ secrets.EXPO_TOKEN }} + + - name: Install dependencies + run: npm ci --include=optional + + - name: Build iOS (local) + working-directory: frontend + run: eas build --platform ios --profile production --local --non-interactive --output=${{ github.workspace }}/build.ipa + + - name: Submit to TestFlight + working-directory: frontend + run: eas submit --platform ios --profile production --path ${{ github.workspace }}/build.ipa --non-interactive + + - name: Upload IPA artifact + if: always() + uses: actions/upload-artifact@v4 + with: + name: ios-build-${{ github.sha }} + path: ${{ github.workspace }}/build.ipa + if-no-files-found: ignore + retention-days: 14 From cec911cc55cd8e28e876662a4f85b8be95ce0915 Mon Sep 17 00:00:00 2001 From: Evan Taylor Date: Thu, 16 Apr 2026 15:55:17 -0700 Subject: [PATCH 2/2] fix: don't build on backend or docs changes --- .github/workflows/ios-release-main.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/ios-release-main.yml b/.github/workflows/ios-release-main.yml index a3f6a98..093ca78 100644 --- a/.github/workflows/ios-release-main.yml +++ b/.github/workflows/ios-release-main.yml @@ -3,6 +3,18 @@ name: iOS TestFlight (main) on: push: branches: [main] + paths-ignore: + - 'backend/**' + - 'convex/**' + - 'docs/**' + - '**.md' + - 'scripts/**' + - 'vercel.json' + - '.github/workflows/ci.yml' + - '.github/workflows/ios-release-dev.yml' + - '.github/ISSUE_TEMPLATE/**' + - '.coderabbit.yaml' + - 'LICENSE' concurrency: group: ios-release-main