name: Build & test

on:
  push:
    branches:
      - main
      - compose-1.0
      - compose-1.0
      - compose-1.1
      - compose-1.2
      - compose-1.3
      - compose-1.4
      - compose-1.5
    paths-ignore:
      - '**.md'
  pull_request:

jobs:
  build:
    # Skip build if head commit contains 'skip ci'
    if: "!contains(github.event.head_commit.message, 'skip ci')"

    runs-on: ubuntu-latest
    timeout-minutes: 45

    steps:
      - uses: actions/checkout@v2
        with:
          # Fetch expanded history, which is needed for affected module detection
          fetch-depth: '500'

      - name: Copy CI gradle.properties
        run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Setup java
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 17

      - name: Decrypt secrets
        run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}

      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2
        
      - name: Build
        run: |
          ./gradlew --scan --stacktrace \
              spotlessCheck \
              assemble \
              metalavaCheckCompatibilityRelease \
              lintDebug

      - name: Unit Tests
        run: |
          ./scripts/run-tests.sh \
              --unit-tests \
              --run-affected \
              --affected-base-ref=$BASE_REF

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: test-results-robolectric
          path: |
            **/build/test-results/*
            **/build/reports/*

      - name: Clean secrets
        if: always()
        run: release/signing-cleanup.sh

  test:
    runs-on: macos-latest
    needs: build
    timeout-minutes: 70

    strategy:
      # Allow tests to continue on other devices if they fail on one device.
      fail-fast: false
      matrix:
        api-level: [ 22, 26, 29 ]
        shard: [ 0, 1 ] # Need to update shard-count below if this changes

    env:
      TERM: dumb

    steps:
      - uses: actions/checkout@v3
        with:
          # Fetch expanded history, which is needed for affected module detection
          fetch-depth: '500'

      - name: Copy CI gradle.properties
        run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Setup java
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 17

      - name: Decrypt secrets
        run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}

      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2

      # Determine what emulator image to use. We run all API 28+ emulators using
      # the google_apis image
      - name: Determine emulator target
        id: determine-target
        env:
          API_LEVEL: ${{ matrix.api-level }}
        run: |
          TARGET="default"
          if [ "$API_LEVEL" -ge "28" ]; then
            TARGET="google_apis"
          fi
          echo "TARGET=$TARGET" >> $GITHUB_OUTPUT
      - name: Determine emulator arch
        id: determine-arch
        env: 
          API_LEVEL: ${{ matrix.api-level }}
        run: |
          ARCH="x86"
          if [ "$API_LEVEL" -ge "31" ]; then
            ARCH="x86_64"
          fi
          echo "ARCH=$ARCH" >> $GITHUB_OUTPUT
      - name: Run tests
        uses: reactivecircus/android-emulator-runner@v2
        with:
          api-level: ${{ matrix.api-level }}
          arch: ${{ steps.determine-arch.outputs.ARCH }}
          target: ${{ steps.determine-target.outputs.TARGET }}
          profile: Galaxy Nexus
          script: ./scripts/run-tests.sh --log-file=logcat.txt --run-affected --affected-base-ref=$BASE_REF --shard-index=${{ matrix.shard }} --shard-count=2

      - name: Clean secrets
        if: always()
        run: release/signing-cleanup.sh

      - name: Upload logs
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: logs-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
          path: logcat.txt

      - name: Upload test results
        if: always()
        uses: actions/upload-artifact@v2
        with:
          name: test-results-${{ matrix.api-level }}-${{ steps.determine-target.outputs.TARGET }}-${{ matrix.shard }}
          path: |
            **/build/reports/*
            **/build/outputs/*/connected/*

  deploy:
    if: github.event_name == 'push' # only deploy for pushed commits (not PRs)

    runs-on: ubuntu-latest
    needs: [ build, test ]
    timeout-minutes: 30
    env:
      TERM: dumb

    steps:
      - uses: actions/checkout@v2

      - name: Copy CI gradle.properties
        run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties

      - name: Setup java
        uses: actions/setup-java@v3
        with:
          distribution: temurin
          java-version: 17

      - name: Decrypt secrets
        run: release/signing-setup.sh ${{ secrets.ENCRYPT_KEY }}

      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2

      - name: Deploy to Sonatype
        run: ./gradlew publish --no-parallel --stacktrace --no-configuration-cache
        env:
          ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
          ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}

      - name: Clean secrets
        if: always()
        run: release/signing-cleanup.sh
