name: Build on: push: paths-ignore: - 'README.md' pull_request: jobs: build: name: Build on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: os: [ ubuntu-latest, windows-latest, macOS-latest ] steps: - name: Check out uses: actions/checkout@v2 with: submodules: 'recursive' - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: '11' - name: Gradle cache uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }} - name: Build with Gradle run: | echo 'android.native.buildOutput=verbose' >> gradle.properties ./gradlew :lsplant:publishToMavenLocal env: ORG_GRADLE_PROJECT_signingKey: ${{ secrets.maven_pgp_signingKey }} ORG_GRADLE_PROJECT_signingPassword: ${{ secrets.maven_pgp_signingPassword }} - name: Upload library uses: actions/upload-artifact@v2 with: name: ${{ matrix.os }}-library path: ~/.m2 test: needs: build name: Test on API ${{ matrix.api-level }} ${{ matrix.arch }} runs-on: macos-latest strategy: fail-fast: false matrix: include: - api-level: 21 target: default arch: x86_64 - api-level: 21 target: default arch: x86 - api-level: 22 target: default arch: x86_64 - api-level: 22 target: default arch: x86 - api-level: 23 target: default arch: x86_64 - api-level: 23 target: default arch: x86 - api-level: 24 target: default arch: x86_64 - api-level: 24 target: default arch: x86 - api-level: 25 target: default arch: x86_64 - api-level: 25 target: default arch: x86 - api-level: 26 target: default arch: x86_64 - api-level: 26 target: default arch: x86 - api-level: 27 target: default arch: x86_64 - api-level: 27 target: default arch: x86 - api-level: 28 target: default arch: x86_64 - api-level: 28 target: default arch: x86 - api-level: 29 target: default arch: x86_64 - api-level: 29 target: default arch: x86 - api-level: 30 target: default arch: x86_64 - api-level: 30 target: google_apis arch: x86 - api-level: 31 target: default arch: x86_64 - api-level: 31 target: android-tv arch: x86 - api-level: 32 target: google_apis arch: x86_64 - api-level: 33 target: google_apis arch: x86_64 steps: - name: checkout uses: actions/checkout@v2 with: submodules: 'recursive' - name: Set up JDK 11 uses: actions/setup-java@v1 with: java-version: '11' - name: AVD cache uses: actions/cache@v2 id: avd-cache with: path: | ~/.android/avd/* ~/.android/adb* key: avd-${{ matrix.api-level }}-${{ matrix.arch }}-${{ matrix.target }} - name: Gradle cache uses: actions/cache@v2 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: gradle-${{ runner.os }}-${{ matrix.api-level }}-${{ matrix.arch }}-${{ matrix.target }}-${{ hashFiles('**/*.gradle*') }}-${{ hashFiles('**/gradle/wrapper/gradle-wrapper.properties') }}-${{ hashFiles('**/buildSrc/**/*.kt') }} restore-keys: gradle-${{ runner.os }}- - name: create AVD and generate snapshot for caching if: steps.avd-cache.outputs.cache-hit != 'true' uses: yujincheng08/android-emulator-runner@release/v2 with: api-level: ${{ matrix.api-level }} arch: ${{ matrix.arch }} target: ${{ matrix.target }} script: echo "Generated AVD snapshot for caching." force-avd-creation: false emulator-options: -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: false avd-name: ${{ matrix.api-level }}_${{ matrix.arch }} - name: run tests uses: reactivecircus/android-emulator-runner@v2 with: api-level: ${{ matrix.api-level }} arch: ${{ matrix.arch }} target: ${{ matrix.target }} script: ./gradlew :lsplant:prefabDebugConfigurePackage; ./gradlew :test:connectedCheck force-avd-creation: false emulator-options: -no-snapshot-save -no-window -gpu swiftshader_indirect -noaudio -no-boot-anim -camera-back none disable-animations: true avd-name: ${{ matrix.api-level }}_${{ matrix.arch }} - name: Upload outputs if: always() uses: actions/upload-artifact@v2 with: name: test-outputs path: test/build/outputs