name: Run Tests on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: gradle: [4.9, 4.10.2, 6.8.3] java: [jdk8, jdk11, jdk15] exclude: # Dont run older gradle versions on newer java - java: jdk15 gradle: 4.9 - java: jdk15 gradle: 4.10.2 - java: jdk11 gradle: 4.9 - java: jdk11 gradle: 4.10.2 runs-on: ubuntu-20.04 container: image: gradle:${{ matrix.gradle }}-${{ matrix.java }} options: --user root steps: - uses: actions/checkout@v2 - uses: gradle/wrapper-validation-action@v1 - run: gradle build check -x test --stacktrace # This job is used to feed the test matrix of next job to allow the tests to run in parallel prepare_test_matrix: # Lets wait to ensure it builds before going running tests needs: build runs-on: ubuntu-20.04 container: image: gradle:6.8.3-jdk15 options: --user root steps: - uses: actions/checkout@v2 - run: gradle writeActionsTestMatrix --stacktrace - id: set-matrix run: echo "::set-output name=matrix::$(cat build/test_matrix.json)" outputs: matrix: ${{ steps.set-matrix.outputs.matrix }} run_tests: needs: prepare_test_matrix strategy: fail-fast: false matrix: java: [jdk8, jdk11, jdk15] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} runs-on: ubuntu-20.04 container: image: gradle:6.8.3-${{ matrix.java }} options: --user root steps: - uses: actions/checkout@v2 - run: gradle test --tests *${{ matrix.test }} --stacktrace env: TEST_WARNING_MODE: fail - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: ${{ matrix.test }} (${{ matrix.java }}) Results path: build/reports/ # Special case this test to run across all os's reproducible_build_test: needs: build strategy: fail-fast: false matrix: java: [ 1.8, 11, 15 ] os: [ windows-2019, ubuntu-20.04, macos-10.15 ] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v2 - uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - run: ./gradlew test --tests *ReproducibleBuildTest --stacktrace - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: Reproducible Build ${{ matrix.os }} (${{ matrix.java }}) Results path: build/reports/