From 990af46d1e9303888455193a21391422aa0a20c1 Mon Sep 17 00:00:00 2001 From: Dustin Do Date: Wed, 7 Aug 2024 12:37:04 +0700 Subject: [PATCH] feat(cd): add eas workflows --- .github/workflows/eas-build.yaml | 103 ++++++++++++++++++++++++++++++ .github/workflows/eas-update.yaml | 60 +++++++++++++++++ AppleWWDRCAG3.cer | Bin 0 -> 1109 bytes Makefile | 15 +++++ apps/mobile/app.json | 10 ++- 5 files changed, 187 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/eas-build.yaml create mode 100644 .github/workflows/eas-update.yaml create mode 100644 AppleWWDRCAG3.cer create mode 100644 Makefile diff --git a/.github/workflows/eas-build.yaml b/.github/workflows/eas-build.yaml new file mode 100644 index 00000000..fe31b59e --- /dev/null +++ b/.github/workflows/eas-build.yaml @@ -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 diff --git a/.github/workflows/eas-update.yaml b/.github/workflows/eas-update.yaml new file mode 100644 index 00000000..c2a56d67 --- /dev/null +++ b/.github/workflows/eas-update.yaml @@ -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 diff --git a/AppleWWDRCAG3.cer b/AppleWWDRCAG3.cer new file mode 100644 index 0000000000000000000000000000000000000000..32f96f81dd6ea4c1c0f8e84698a50df773444b83 GIT binary patch literal 1109 zcmXqLVhJ>8Vzyks%*4pVBv7+HlS_5G<-h9LE>#CBj=nSCW#iOp^Jx3d%gD&h%3zRW z$Zf#M#vIDRCd?EXY$$9X2;y)Fb2%0iH*zq6|t6T@0MSI(e)iI>Ymea#G4OQ&JUNQp-|v@(WUn6oOK7z!nxO;Ibd;6K){o*(MkVCXU}R-rZerwT0E%-lH8CYLni>cB0Y1I-s6|D1SjdC!T1#gEpxT}+xg zX~l#D^V*DQXL}#~nf!ynzs^Bts5HBBM?YUi*LCU=8QrPsRL7p`U7PH?oF*7nSE^d5p z(D=qc2pB!G!ijc@}j8RRiS(iVNi1WT9Gi4Pg$!gt>iJm2SVTDg9T1)HbA1Ze zB%z&Z8p%A<-z?u`zz34%2l<2rm_yhM1lYL1`5`%ljfs(k3792Na|kd^Ffy!76@KyU zL1VcKle^Qt_@$N#uaZ{&Jv!lJvGCP-voEaT@9jPPmhpU!hC}r6P!-1?f6gD=s{HcK zn~(XY8f4249ZB?5O<&J{%2IXh<;PWLj5T=q^cIFY6#se_vyLrL^X=nS9{G!0~pME4H^8F=`FYGft6Cx##-<@*tz`>mQ3dQ$4 zudQ=tHhBjnSZuXy%6$`L7`%^vqK~I%N&m9I(=G0PvZd;Idw*Vv`CNY}hnv&vQOc7; z=FB3JS6^jKS+(-^zi+cR(!1Yl?^q@7*}VSz={+ycznWUOVT