name: beta

on:
  push:
    #branches:
    #  - master
    #  - stable
    tags:
      - 'v*-b*'
    #tags-ignore:
    #  - 'v*-*'

env:
  APP_STORE_CONNECT_API_KEY_KEY_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY_ID }}
  APP_STORE_CONNECT_API_KEY_ISSUER_ID: ${{ secrets.APP_STORE_CONNECT_API_KEY_ISSUER_ID }}
  APP_STORE_CONNECT_API_KEY_KEY: ${{ secrets.APP_STORE_CONNECT_API_KEY_KEY }}
  FASTLANE_USERNAME: ${{ secrets.FASTLANE_USERNAME }}
  FASTLANE_PASSWORD: ${{ secrets.FASTLANE_PASSWORD }}

jobs:
  upload_to_app_store:
    runs-on: macos-10.15
    timeout-minutes: 60
    env:
      MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }}
      MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
      MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }}
      MATCH_GIT_PRIVATE_KEY: ${{ secrets.MATCH_GIT_PRIVATE_KEY }}
      MATCH_KEYCHAIN_NAME: ${{ secrets.MATCH_KEYCHAIN_NAME }}
      MATCH_KEYCHAIN_PASSWORD: ${{ secrets.MATCH_KEYCHAIN_PASSWORD }}
      DELIVER_USERNAME: ${{ secrets.DELIVER_USERNAME }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 0 # for proper build number
          submodules: true
      - name: Prepare Ruby bundle
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - name: Select Xcode version
        uses: maxim-lobanov/setup-xcode@v1
        with:
          xcode-version: latest-stable
      - name: Cache CocoaPods
        uses: actions/cache@v2
        with:
          path: |
            Pods
          key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
          restore-keys: |
            ${{ runner.os }}-pods-
      - name: Prepare for fastlane match
        run: |
          scripts/ci/recognize-match-hostname.sh
          bundle exec fastlane preinstall_development_certs
      - name: Build (macOS)
        run: |
          bundle exec fastlane --env mac,beta create_archive
      - name: Build (iOS)
        run: |
          bundle exec fastlane --env ios,beta create_archive
      - name: Upload to App Store (macOS)
        run: |
          bundle exec fastlane --env mac,beta store_upload
      - name: Upload to App Store (iOS)
        run: |
          bundle exec fastlane --env ios,beta store_upload
  submit_to_testflight:
    runs-on: macos-10.15
    needs: upload_to_app_store
    environment:
      name: testflight
    env:
      PILOT_USERNAME: ${{ secrets.PILOT_USERNAME }}
      PILOT_GROUPS: ${{ secrets.PILOT_GROUPS }}
      PILOT_BETA_APP_FEEDBACK: ${{ secrets.PILOT_BETA_APP_FEEDBACK }}
      PILOT_BETA_APP_REVIEW_INFO: ${{ secrets.PILOT_BETA_APP_REVIEW_INFO }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
          submodules: true
      - name: Prepare Ruby bundle
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - name: Submit to TestFlight (macOS)
        run: |
          export PILOT_CHANGELOG=`ci/build-changelog.sh mac`
          bundle exec fastlane --env mac,beta store_beta
      - name: Submit to TestFlight (iOS)
        run: |
          export PILOT_CHANGELOG=`ci/build-changelog.sh ios`
          bundle exec fastlane --env ios,beta store_beta
  submit_for_app_review:
    runs-on: macos-10.15
    needs: submit_to_testflight
    environment:
      name: app_review
    env:
      DELIVER_USERNAME: ${{ secrets.DELIVER_USERNAME }}
    steps:
      - name: Check out repository
        uses: actions/checkout@v2
        with:
          fetch-depth: 0
          submodules: true
      - name: Prepare Ruby bundle
        uses: ruby/setup-ruby@v1
        with:
          bundler-cache: true
      - name: Update App Store Connect metadata (macOS)
        run: |
          bundle exec fastlane --env mac update_metadata
      - name: Update App Store Connect metadata (iOS)
        run: |
          bundle exec fastlane --env ios update_metadata
      - name: Submit for App Review (macOS)
        run: |
          bundle exec fastlane --env mac store_review
      - name: Submit for App Review (iOS)
        run: |
          bundle exec fastlane --env ios store_review