name: Deploy to Firebase on: workflow_dispatch: inputs: releaseNotes: description: 'Release Notes attached to Firebase Build (defaults to last commit hash+message if left empty)' type: string jobs: android-publish-to-firebase: runs-on: ubuntu-latest permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' cache: 'npm' - name: node_modules cache uses: actions/cache@v3 id: npm-cache with: path: node_modules key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-npm- - name: Install Dependencies run: npm ci - name: Set up Ruby & Fastlane uses: ruby/setup-ruby@v1 with: ruby-version: '3.2.1' bundler-cache: true working-directory: ./android - name: Setup Java uses: actions/setup-java@v3 with: distribution: 'adopt' java-version: '11' # caching currently disabled, because the files are large, but don't decrease built time too much #cache: gradle - name: Restore Firebase Service Account env: firebase_service_account_base64: ${{ secrets.CI_EVAL_FIREBASE_DISTRIBUTION_AUTH_BASE64 }} run: | echo "$firebase_service_account_base64" | base64 --decode > firebase-distribution-service-account.json echo "CI_EVAL_FIREBASE_DISTRIBUTION_AUTH_FILE=`pwd`/firebase-distribution-service-account.json" >> $GITHUB_ENV - name: Staging .ENV File env: ENV_FILE_CONTENT: ${{ secrets.CI_STAGING_ENV_FILE_CONTENT }} run: echo "$ENV_FILE_CONTENT" > .env - name: Deploy to Firebase working-directory: ./android run: bundle exec fastlane deployInternalToFirebase release_notes:"${{ github.event.inputs.releaseNotes }}" ios-publish-to-firebase: runs-on: macos-latest permissions: contents: read steps: - name: Checkout repository uses: actions/checkout@v3 - name: Setup Node uses: actions/setup-node@v3 with: node-version-file: '.nvmrc' cache: 'npm' - name: node_modules cache uses: actions/cache@v3 id: npm-cache with: path: node_modules key: ${{ runner.os }}-npm-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-npm- - name: Install Dependencies run: npm ci - name: Set up Ruby & Fastlane uses: ruby/setup-ruby@v1 with: ruby-version: '3.2.1' bundler-cache: true working-directory: ./ios - name: pod install cache uses: actions/cache@v3 id: pod-cache with: path: ios/Pods key: ${{ runner.os }}-pod-${{ hashFiles('ios/Podfile.lock') }} restore-keys: ${{ runner.os }}-pod- - name: Install iOS Dependencies working-directory: ./ios run: pod install - name: Restore Firebase Service Account env: firebase_service_account_base64: ${{ secrets.CI_EVAL_FIREBASE_DISTRIBUTION_AUTH_BASE64 }} run: | echo "$firebase_service_account_base64" | base64 --decode > firebase-distribution-service-account.json echo "CI_EVAL_FIREBASE_DISTRIBUTION_AUTH_FILE=`pwd`/firebase-distribution-service-account.json" >> $GITHUB_ENV - name: Restore Internal Provisioning Profile env: provision_profile_base64: ${{ secrets.CI_EVAL_IOS_PROVISIONING_PROFILE_INTERNAL_BASE64 }} run: | mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles echo "$provision_profile_base64" | base64 --decode > ~/Library/MobileDevice/Provisioning\ Profiles/internal_profile.mobileprovision echo "CI_EVAL_IOS_PROVISIONING_PROFILE_INTERNAL_FILENAME=internal_profile.mobileprovision" >> $GITHUB_ENV - name: Restore iOS Cert env: ios_cert_base64: ${{ secrets.CI_EVAL_IOS_CERT_BASE64 }} run: | echo "$ios_cert_base64" | base64 --decode > ios_distribution.p12 echo "CI_EVAL_IOS_CERT_FILE=`pwd`/ios_distribution.p12" >> $GITHUB_ENV - name: Staging .ENV File env: ENV_FILE_CONTENT: ${{ secrets.CI_STAGING_ENV_FILE_CONTENT }} run: echo "$ENV_FILE_CONTENT" > .env - name: Deploy to Firebase env: CI_EVAL_IOS_CERT_PASSWORD: ${{ secrets.CI_EVAL_IOS_CERT_PASSWORD }} CI_EVAL_INTERNAL_APP_IDENTIFIER: ${{ secrets.CI_EVAL_INTERNAL_APP_IDENTIFIER }} working-directory: ./ios run: bundle exec fastlane deployInternalToFirebase release_notes:"${{ github.event.inputs.releaseNotes }}"