diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b61c4e..245119a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,17 +1,38 @@ -# This workflow will build a Java project with Gradle -# For more information see: https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-gradle - -name: Java CI with Gradle +name: Build on: push: - branches: [ "main" ] + branches: main pull_request: - branches: [ "main" ] jobs: - build: + assemble: + runs-on: ubuntu-latest + outputs: + mps_versions: ${{ steps.mps_versions.outputs.mps_versions }} + steps: + - uses: actions/checkout@v4 + - name: Set up JDK + uses: actions/setup-java@v4 + with: + distribution: 'temurin' + java-version: '21' + - name: Set up Gradle + uses: gradle/actions/setup-gradle@v4 + - name: Assemble + run: ./gradlew --no-daemon --no-parallel assemble + - name: Output MPS versions + id: mps_versions + run: | + mps_versions=$(jq > "$GITHUB_OUTPUT" + + test: + needs: assemble runs-on: ubuntu-latest + strategy: + matrix: + mps_version: ${{ fromJSON(needs.assemble.outputs.mps_versions) }} steps: - uses: actions/checkout@v4 - name: Set up JDK @@ -19,7 +40,18 @@ jobs: with: distribution: 'temurin' java-version: '21' - - name: Setup Gradle + - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - - name: Build with Gradle - run: ./gradlew build + - name: Test + run: ./gradlew --no-daemon --no-parallel testMps${{ matrix.mps_version }} + + # The job that acts as a required check for pull requests + build: + needs: test + runs-on: ubuntu-latest + steps: + - run: exit 1 + if: | + contains(needs.*.result, 'failure') || + contains(needs.*.result, 'cancelled') || + contains(needs.*.result, 'skipped') diff --git a/gradle.properties b/gradle.properties index dd32300..34c035b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,5 @@ version.backend=1.24.2 version.project-loader=4.0.0 # A comma-separated list of MPS releases or prereleases to test against. +# Also used in the GitHub workflow to test each version in parallel supportedMpsVersions=2022.3.3,2023.2.2,2024.1.2,2024.3.1,251.23774.10091