Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
name: Assemble project

on:
  push:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Setup Gradle
        uses: gradle/actions/setup-gradle@v4
      - name: Validate binary compatibility
        run: ./gradlew apiCheck
      - name: Build library
        run: ./gradlew :parsely:assembleDebug
      - name: Build example app
        run: ./gradlew :example:assembleDebug
      - name: Android Lint
        run: ./gradlew lintDebug
      - name: Android Unit Tests
        run: ./gradlew :parsely:testDebugUnitTest
      - name: Generate XML coverage report
        run: ./gradlew :parsely:koverXmlReportDebug
      - uses: codecov/codecov-action@v3
        with:
          files: parsely/build/reports/kover/reportDebug.xml
          token: ${{ secrets.CODECOV_TOKEN }}
      - name: Publish snapshot
        run: ./gradlew :parsely:publishToMavenCentral --max-workers 1
        env:
          ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.MAVEN_CENTRAL_USERNAME }}
          ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.MAVEN_CENTRAL_PASSWORD }}
          ORG_GRADLE_PROJECT_signingInMemoryKeyId: ${{ secrets.SIGNING_KEY_ID }}
          ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.SIGNING_PASSWORD }}
          ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.SIGNING_KEY }}
  functional-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          fetch-depth: 0
      - name: set up JDK
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
      - name: Setup Gradle
        uses: gradle/gradle-build-action@v2
      - name: Enable KVM group perms
        run: |
          echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
          sudo udevadm control --reload-rules
          sudo udevadm trigger --name-match=kvm
      - name: AVD cache
        uses: actions/cache@v3
        id: avd-cache
        with:
          path: |
            ~/.android/avd/*
            ~/.android/adb*
          key: avd
      - name: Create AVD and generate snapshot for caching
        if: steps.avd-cache.outputs.cache-hit != 'true'
        uses: reactivecircus/android-emulator-runner@v2
        with:
          working-directory: .
          api-level: 31
          profile: Nexus 6
          arch: x86_64
          force-avd-creation: false
          avd-name: macOS-avd-x86_64-31
          emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
          disable-animations: true
          disk-size: 4096M
          script: echo "Generated AVD snapshot for caching."
      - name: Functional Tests
        uses: reactivecircus/android-emulator-runner@v2
        with:
          working-directory: .
          api-level: 31
          profile: Nexus 6
          arch: x86_64
          force-avd-creation: false
          avd-name: macOS-avd-x86_64-31
          emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none
          disable-animations: true
          disk-size: 4096M
          script: adb uninstall "com.parsely.parselyandroid.test"; ./gradlew :parsely:connectedDebugAndroidTest
      - name: Publish build artifacts
        uses: actions/upload-artifact@v4
        if: always()
        with:
          name: functional-tests-artifact
          path: |
            ./parsely/build/reports/*
            ./parsely/build/outputs/androidTest-results