From c309cd73c72c1c225327599aea74e5b7e2da0c79 Mon Sep 17 00:00:00 2001 From: Ruslan Konviser Date: Sat, 25 Nov 2023 18:04:21 +0100 Subject: [PATCH] chore: build iOS and Android in separate GitHub actions --- ...obile.apps.yml => mobile.apps.android.yml} | 25 +----- .github/workflows/mobile.apps.ios.yml | 78 +++++++++++++++++++ .github/workflows/mobile.before-merge.yml | 13 ---- .github/workflows/mobile.dev.yml | 2 +- .github/workflows/mobile.prod.yml | 41 +--------- 5 files changed, 83 insertions(+), 76 deletions(-) rename .github/workflows/{mobile.apps.yml => mobile.apps.android.yml} (68%) create mode 100644 .github/workflows/mobile.apps.ios.yml diff --git a/.github/workflows/mobile.apps.yml b/.github/workflows/mobile.apps.android.yml similarity index 68% rename from .github/workflows/mobile.apps.yml rename to .github/workflows/mobile.apps.android.yml index c210e46fc..68aade178 100644 --- a/.github/workflows/mobile.apps.yml +++ b/.github/workflows/mobile.apps.android.yml @@ -1,4 +1,4 @@ -name: Mobile Build, Deploy and Publish Apps +name: Mobile Build, Deploy and Publish Apps Android on: push: branches: @@ -44,22 +44,6 @@ jobs: eas-version: latest token: ${{ secrets.EXPO_TOKEN }} - - name: Set Apple Store Credentials - run: | - echo "APPLE_ID=${{ secrets.APPLE_ID }}" >> $GITHUB_ENV - echo "APPSTORE_ISSUER_ID=${{ secrets.APPSTORE_ISSUER_ID }}" >> $GITHUB_ENV - echo "APPSTORE_API_KEY_ID=${{ secrets.APPSTORE_API_KEY_ID }}" >> $GITHUB_ENV - - - name: Replace Secrets in eas.json - run: | - sed -i 's/APPLE_ID_PLACEHOLDER/${{ secrets.APPLE_ID }}/' ./apps/mobile/eas.json - sed -i 's/APPSTORE_ISSUER_ID_PLACEHOLDER/${{ secrets.APPSTORE_ISSUER_ID }}/' ./apps/mobile/eas.json - sed -i 's/APPSTORE_API_KEY_ID_PLACEHOLDER/${{ secrets.APPSTORE_API_KEY_ID }}/' ./apps/mobile/eas.json - - - name: Create Apple API Key File - run: | - echo "${{ secrets.APPSTORE_API_PRIVATE_KEY }}" > ./apps/mobile/AuthKey_R9QZ5LP8NK.p8 - - name: Decode Google Credentials run: | DECODED_GOOGLE_CREDENTIALS=$(echo '${{ secrets.GOOGLE_CREDENTIALS }}' | base64 --decode) @@ -79,13 +63,10 @@ jobs: yarn build:mobile - name: Build on EAS - run: cd apps/mobile && eas build --platform all --non-interactive + run: cd apps/mobile && eas build --platform android --non-interactive - name: Publish update - run: cd apps/mobile && eas update --auto - - - name: Upload App build to App store - run: cd apps/mobile && eas submit --platform ios --latest --non-interactive + run: cd apps/mobile && eas update --auto --platform android --non-interactive - name: 'Authenticate to Google Cloud' uses: 'google-github-actions/auth@v1' diff --git a/.github/workflows/mobile.apps.ios.yml b/.github/workflows/mobile.apps.ios.yml new file mode 100644 index 000000000..52e2ea401 --- /dev/null +++ b/.github/workflows/mobile.apps.ios.yml @@ -0,0 +1,78 @@ +name: Mobile Build, Deploy and Publish Apps iOS +on: + push: + branches: + - apps + paths: + - '.github/workflows/mobile.apps.yml' + - 'apps/mobile/**' + - 'package.json' + - 'yarn.lock' + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + deploy: + runs-on: ubuntu-latest + + environment: prod + + permissions: + contents: read + + 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 + + - uses: actions/checkout@v3 + + - name: Use Node.js 18.x + uses: actions/setup-node@v3 + with: + node-version: '18' + cache: 'yarn' + + - name: Setup EAS + uses: expo/expo-github-action@v8 + with: + eas-version: latest + token: ${{ secrets.EXPO_TOKEN }} + + - name: Set Apple Store Credentials + run: | + echo "APPLE_ID=${{ secrets.APPLE_ID }}" >> $GITHUB_ENV + echo "APPSTORE_ISSUER_ID=${{ secrets.APPSTORE_ISSUER_ID }}" >> $GITHUB_ENV + echo "APPSTORE_API_KEY_ID=${{ secrets.APPSTORE_API_KEY_ID }}" >> $GITHUB_ENV + + - name: Replace Secrets in eas.json + run: | + sed -i 's/APPLE_ID_PLACEHOLDER/${{ secrets.APPLE_ID }}/' ./apps/mobile/eas.json + sed -i 's/APPSTORE_ISSUER_ID_PLACEHOLDER/${{ secrets.APPSTORE_ISSUER_ID }}/' ./apps/mobile/eas.json + sed -i 's/APPSTORE_API_KEY_ID_PLACEHOLDER/${{ secrets.APPSTORE_API_KEY_ID }}/' ./apps/mobile/eas.json + + - name: Create Apple API Key File + run: | + echo "${{ secrets.APPSTORE_API_PRIVATE_KEY }}" > ./apps/mobile/AuthKey_R9QZ5LP8NK.p8 + + - name: Install Packages + run: | + yarn install --frozen-lockfile + + - name: Build Mobile + run: | + yarn build:mobile + + - name: Build on EAS + run: cd apps/mobile && eas build --platform ios --non-interactive + + - name: Publish update + run: cd apps/mobile && eas update --auto --platform ios --non-interactive + + - name: Upload App build to App store + run: cd apps/mobile && eas submit --platform ios --latest --non-interactive diff --git a/.github/workflows/mobile.before-merge.yml b/.github/workflows/mobile.before-merge.yml index cdaf570b5..a207081bd 100644 --- a/.github/workflows/mobile.before-merge.yml +++ b/.github/workflows/mobile.before-merge.yml @@ -21,13 +21,6 @@ jobs: contents: read 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 - - uses: actions/checkout@v3 - name: Skip workflow if PR is from develop to main @@ -47,12 +40,6 @@ jobs: node-version: '18' cache: 'yarn' - - name: Setup EAS - uses: expo/expo-github-action@v8 - with: - eas-version: latest - token: ${{ secrets.EXPO_TOKEN }} - - name: Install Packages run: | yarn install --frozen-lockfile diff --git a/.github/workflows/mobile.dev.yml b/.github/workflows/mobile.dev.yml index 8e499ccb5..6cd4ce5f6 100644 --- a/.github/workflows/mobile.dev.yml +++ b/.github/workflows/mobile.dev.yml @@ -1,4 +1,4 @@ -name: Mobile Build & Deploy DEV +name: Mobile Build DEV on: push: branches: diff --git a/.github/workflows/mobile.prod.yml b/.github/workflows/mobile.prod.yml index c922de20c..1846759cc 100644 --- a/.github/workflows/mobile.prod.yml +++ b/.github/workflows/mobile.prod.yml @@ -1,4 +1,4 @@ -name: Mobile Build, Deploy and Publish PROD +name: Mobile Build PROD on: push: branches: @@ -23,13 +23,6 @@ jobs: contents: read 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 - - uses: actions/checkout@v3 - name: Use Node.js 18.x @@ -38,38 +31,6 @@ jobs: node-version: '18' cache: 'yarn' - - name: Setup EAS - uses: expo/expo-github-action@v8 - with: - eas-version: latest - token: ${{ secrets.EXPO_TOKEN }} - - - name: Set Apple Store Credentials - run: | - echo "APPLE_ID=${{ secrets.APPLE_ID }}" >> $GITHUB_ENV - echo "APPSTORE_ISSUER_ID=${{ secrets.APPSTORE_ISSUER_ID }}" >> $GITHUB_ENV - echo "APPSTORE_API_KEY_ID=${{ secrets.APPSTORE_API_KEY_ID }}" >> $GITHUB_ENV - - - name: Replace Secrets in eas.json - run: | - sed -i 's/APPLE_ID_PLACEHOLDER/${{ secrets.APPLE_ID }}/' ./apps/mobile/eas.json - sed -i 's/APPSTORE_ISSUER_ID_PLACEHOLDER/${{ secrets.APPSTORE_ISSUER_ID }}/' ./apps/mobile/eas.json - sed -i 's/APPSTORE_API_KEY_ID_PLACEHOLDER/${{ secrets.APPSTORE_API_KEY_ID }}/' ./apps/mobile/eas.json - - - name: Create Apple API Key File - run: | - echo "${{ secrets.APPSTORE_API_PRIVATE_KEY }}" > ./apps/mobile/AuthKey_R9QZ5LP8NK.p8 - - - name: Decode Google Credentials - run: | - DECODED_GOOGLE_CREDENTIALS=$(echo '${{ secrets.GOOGLE_CREDENTIALS }}' | base64 --decode) - echo "DECODED_GOOGLE_CREDENTIALS=$DECODED_GOOGLE_CREDENTIALS" >> $GITHUB_ENV - echo "::add-mask::$DECODED_GOOGLE_CREDENTIALS" - ESCAPED_GOOGLE_CREDENTIALS=$(echo "$DECODED_GOOGLE_CREDENTIALS" | sed ':a;N;$!ba;s/\n/\\n/g' | sed 's/"/\\"/g') - ESCAPED_GOOGLE_CREDENTIALS=$(echo $ESCAPED_GOOGLE_CREDENTIALS | sed 's/\\n/\\\\n/g') - echo "ESCAPED_GOOGLE_CREDENTIALS=$ESCAPED_GOOGLE_CREDENTIALS" >> $GITHUB_ENV - echo "::add-mask::$ESCAPED_GOOGLE_CREDENTIALS" - - name: Install Packages run: | yarn install --frozen-lockfile