name: Run Tests on: [ push, pull_request ] jobs: build: strategy: fail-fast: false matrix: version: [ 7.0.0-jdk16 , 7.2-jdk17 ] runs-on: ubuntu-20.04 container: image: gradle:${{ matrix.version }} 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:7.0.1-jdk16 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: version: [7.0.0-jdk16 , 7.2-jdk17] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} runs-on: ubuntu-20.04 container: image: gradle:${{ matrix.version }} 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/ run_tests_windows: needs: prepare_test_matrix strategy: fail-fast: false matrix: java: [ 16 ] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} runs-on: windows-2019 steps: - uses: actions/checkout@v2 - name: setup jdk ${{ matrix.java }} uses: actions/setup-java@v1 with: java-version: ${{ matrix.java }} - run: ./gradlew 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/