Skip to content

Commit

Permalink
feat(ci): check mobile app builds on push
Browse files Browse the repository at this point in the history
  • Loading branch information
duongdev committed Sep 23, 2024
1 parent 2d5ea60 commit 3a8670c
Showing 1 changed file with 105 additions and 0 deletions.
105 changes: 105 additions & 0 deletions .github/workflows/checks.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@ on:
- push
- workflow_dispatch

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

jobs:
optimize_ci:
runs-on: ubuntu-latest # or whichever runner you use for your CI
Expand Down Expand Up @@ -93,3 +97,104 @@ jobs:

- name: Biome lint
run: pnpm run -r "check"

build_mobile:
name: Build Mobile EAS
needs: optimize_ci
if: needs.optimize_ci.outputs.skip == 'false'
strategy:
matrix:
platform: [android, ios]
profile: [development, preview, production]
runs-on: ${{ matrix.platform == 'ios' && 'macos-latest' || 'ubuntu-latest' }}

steps:
- name: 🏗 Setup repo
uses: actions/checkout@v3

- name: 🏗 Setup Node
uses: actions/setup-node@v3
with:
node-version: 18.x

- uses: pnpm/action-setup@v4
name: 🏗 Install pnpm
with:
run_install: false

- name: 🏗 Get pnpm store directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
- uses: actions/cache@v4
name: 🏗 Setup pnpm cache
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: 🏗 Install homebrew
run: |
if ! command -v brew &> /dev/null; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
else
echo "🤩 Homebrew already installed"
fi
- name: 🏗 Setup fastlane & cocoapods
run: |
brew install fastlane
brew install cocoapods
- name: 🏗 For act to work (local testing)
if: ${{ env.ACT == 'true' }}
run: pnpm install -g 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: |
pnpm install -g eas-cli-local-build-plugin
- name: 📦 Install dependencies
run: pnpm install

- name: 🔐 Setup Apple certificate
if: ${{ env.ACT != 'true' }}
run: |
sudo security authorizationdb write com.apple.trust-settings.admin allow
security add-trusted-cert -d -r unspecified -k ~/Library/Keychains/login.keychain-db ./AppleWWDRCAG3.cer
- name: 📱 Prebuild native code
working-directory: apps/mobile
run: pnpm prebuild

- name: 👷 Build app
working-directory: apps/mobile
env:
NODE_ENV: production
EXPO_USE_METRO_WORKSPACE_ROOT: 0
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY: ${{ secrets.EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY }}
EXPO_PUBLIC_API_URL: ${{ secrets.EXPO_PUBLIC_API_URL }}
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ALLOW_FAILURE: true
EXPO_PUBLIC_SENTRY_DSN: ${{ secrets.EXPO_PUBLIC_SENTRY_DSN }}
EXPO_PUBLIC_POSTHOG_API_KEY: ${{ secrets.EXPO_PUBLIC_POSTHOG_API_KEY }}
EXPO_PUBLIC_POSTHOG_HOST: ${{ secrets.EXPO_PUBLIC_POSTHOG_HOST }}
EXPO_PUBLIC_REVENUECAT_PROJECT_IOS_API_KEY: ${{ secrets.EXPO_PUBLIC_REVENUECAT_PROJECT_IOS_API_KEY }}
run: |
eas build \
--local \
--non-interactive \
--output=./app-build \
--platform=${{ matrix.platform }} \
--profile=${{ matrix.profile }}

0 comments on commit 3a8670c

Please sign in to comment.