name: Run Tests on: [push, pull_request] jobs: build: strategy: fail-fast: false matrix: version: [7.3.1-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 --warning-mode fail # 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.3.1-jdk17 options: --user root steps: - uses: actions/checkout@v2 - run: gradle writeActionsTestMatrix --stacktrace --warning-mode fail - 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.3.1-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 --warning-mode fail 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: [17] test: ${{ fromJson(needs.prepare_test_matrix.outputs.matrix) }} runs-on: windows-2022 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 --warning-mode fail 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: [ 17 ] os: [ windows-2022, ubuntu-20.04, macos-11 ] 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 --warning-mode fail - uses: actions/upload-artifact@v2 if: ${{ failure() }} with: name: Reproducible Build ${{ matrix.os }} (${{ matrix.java }}) Results path: build/reports/