Skip to content

Commit

Permalink
feat(cd): add eas workflows
Browse files Browse the repository at this point in the history
  • Loading branch information
duongdev committed Aug 7, 2024
1 parent a542e2e commit 990af46
Show file tree
Hide file tree
Showing 5 changed files with 187 additions and 1 deletion.
103 changes: 103 additions & 0 deletions .github/workflows/eas-build.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
on:
push:
workflow_dispatch:
inputs:
auto_submit:
description: "Auto submit the build"
required: false
default: true
type: boolean

jobs:
eas-build:
name: EAS build
runs-on: macos-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
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: 👷 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 }}
run: |
eas build --local \
--non-interactive \
--output=./app-build \
--platform=ios \
--profile=production
- name: 🚀 Submit app
if: ${{ github.event.inputs.auto_submit == true }}
working-directory: apps/mobile
run: eas submit --platform ios --profile production --path app-build --non-interactive
60 changes: 60 additions & 0 deletions .github/workflows/eas-update.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
on:
workflow_dispatch:

jobs:
eas-update:
name: EAS Update
runs-on: 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: 🏗 For act to work (local testing)
if: env.ACT === 'true'
run: npm -g install yarn

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

- name: 📦 Install dependencies
run: pnpm install

- name: 🚀 Create update
working-directory: apps/mobile
env:
EXPO_USE_METRO_WORKSPACE_ROOT: 1
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 }}
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 }}
run: eas update --auto --non-interactive
Binary file added AppleWWDRCAG3.cer
Binary file not shown.
15 changes: 15 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
install-act-brew:
@echo "Installing act..."
brew install act

install-act:
@echo "Installing act..."
curl --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/nektos/act/master/install.sh | sudo bash

eas-build:
@echo "Building EAS..."
act --var ACT=true -W .github/workflows/eas-build.yaml --secret-file apps/mobile/.env.production.local -P macos-latest=-self-hosted --input auto_submit=true

eas-update:
@echo "Updating EAS..."
act --var ACT=true -W .github/workflows/eas-update.yaml --secret-file apps/mobile/.env.production.local
10 changes: 9 additions & 1 deletion apps/mobile/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,15 @@
"photosPermission": "Allow $(PRODUCT_NAME) accesses your photos for scanning invoices and transactions"
}
],
["@sentry/react-native/expo"]
[
"@sentry/react-native/expo",
{
"url": "https://sentry.io/",
"note": "Use SENTRY_AUTH_TOKEN env to authenticate with Sentry.",
"project": "6pm-mobile",
"organization": "get6pm"
}
]
],
"experiments": {
"typedRoutes": true
Expand Down

0 comments on commit 990af46

Please sign in to comment.