about summary refs log tree commit diff
path: root/.github/workflows/build-submit-ios.yml
blob: 2350e46ad9968cb2d915c729178283b451bd7d83 (plain) (blame)
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
---
name: Build and Submit iOS

on:
  workflow_dispatch:
    inputs:
      profile:
        type: choice
        description: Build profile to use
        options:
          - testflight
          - production

jobs:
  build:
    name: Build and Submit iOS
    runs-on: macos-14
    steps:
      - name: Check for EXPO_TOKEN
        run: >
          if [ -z "${{ secrets.EXPO_TOKEN }}" ]; then
            echo "You must provide an EXPO_TOKEN secret linked to this project's Expo account in this repo's secrets. Learn more: https://docs.expo.dev/eas-update/github-actions"
            exit 1
          fi

      - name: ⬇️ Checkout
        uses: actions/checkout@v4

      - name: 🔧 Setup Node
        uses: actions/setup-node@v4
        with:
          node-version-file: .nvmrc
          cache: yarn

      - name: 🔨 Setup EAS
        uses: expo/expo-github-action@v8
        with:
          expo-version: latest
          eas-version: latest
          token: ${{ secrets.EXPO_TOKEN }}

      - name: ⛏️ Setup EAS local builds
        run: yarn global add eas-cli-local-build-plugin

      - name: ⚙️ Install dependencies
        run: yarn install

      - name: ☕️ Setup Cocoapods
        uses: maxim-lobanov/setup-cocoapods@v1
        with:
          version: 1.14.3

      - name: 💾 Cache Pods
        uses: actions/cache@v3
        id: pods-cache
        with:
          path: ./ios/Pods
          # We'll use the yarn.lock for our hash since we don't yet have a Podfile.lock. Pod versions will not
          # change unless the yarn version changes as well.
          key: ${{ runner.os }}-pods-${{ hashFiles('yarn.lock') }}

      - name: 🔤 Compile translations
        run: yarn intl:build

      - name: ✏️ Write environment variables
        run: |
          echo "${{ secrets.ENV_TOKEN }}" > .env
          echo "EXPO_PUBLIC_BUNDLE_IDENTIFIER=$(git rev-parse --short HEAD)" >> .env
          echo "EXPO_PUBLIC_BUNDLE_DATE=$(date -u +"%y%m%d%H")" >> .env
          echo "${{ secrets.GOOGLE_SERVICES_TOKEN }}" > google-services.json

      - name: 🏗️ EAS Build
        run: yarn use-build-number-with-bump eas build -p ios --profile ${{ inputs.profile || 'testflight' }} --local --output build.ipa --non-interactive

      - name: 🚀 Deploy
        run: eas submit -p ios --non-interactive --path build.ipa