From 88ce1a7990cac806cd94399ae451844392ff163c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Nicoll?= Date: Thu, 10 Oct 2024 14:04:59 +0200 Subject: [PATCH] Add CI build on several Spring Framework generations This commit adds a GHA workflow that builds the project against a list of configurable Spring Framework versions. The build action has been updated to accept an additional input that tunes the Spring Framework version the build is using As a result, the default Spring Framework version of the project is now configured in gradle.properties. Closes gh-1802 --- .github/actions/build/action.yml | 5 +++- .github/workflows/ci.yml | 44 ++++++++++++++++++++++++++++++++ build.gradle | 2 +- gradle.properties | 4 +++ 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 6c85747b0..734d38408 100644 --- a/.github/actions/build/action.yml +++ b/.github/actions/build/action.yml @@ -30,6 +30,9 @@ inputs: description: 'Whether to publish artifacts ready for deployment to Artifactory' required: false default: 'false' + spring-framework-version: + description: 'Spring Framework version to use' + required: false outputs: build-scan-url: description: 'URL, if any, of the build scan produced by the build' @@ -55,7 +58,7 @@ runs: env: SPRING_REPOSITORY_PASSWORD: ${{ inputs.opensource-repository-password }} SPRING_REPOSITORY_USERNAME: ${{ inputs.opensource-repository-username }} - run: ./gradlew check + run: ./gradlew check ${{ inputs.spring-framework-version != '' && format('-PspringFrameworkVersion={0}', inputs.spring-framework-version) || '' }} - name: Publish id: publish if: ${{ inputs.publish == 'true' }} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..43d7ac032 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,44 @@ +name: CI +on: + push: + branches: + - main +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} +jobs: + ci: + name: 'Spring Framework ${{ matrix.spring.generation}} | Java ${{ matrix.java.version}}' + if: ${{ github.repository == 'spring-projects/spring-webflow' }} + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + java: + - version: 17 + toolchain: false + spring: + - generation: 6.1.x + version: 6.0.13 + - generation: 6.2.x + version: 6.2.0-SNAPSHOT + steps: + - name: Check Out Code + uses: actions/checkout@v4 + - name: Build + id: build + uses: ./.github/actions/build + with: + develocity-access-key: ${{ secrets.DEVELOCITY_ACCESS_KEY }} + java-early-access: ${{ matrix.java.early-access || 'false' }} + java-distribution: ${{ matrix.java.distribution }} + java-toolchain: ${{ matrix.java.toolchain }} + java-version: ${{ matrix.java.version }} + spring-framework-version: ${{ matrix.spring.version }} + - name: Send Notification + if: always() + uses: ./.github/actions/send-notification + with: + build-scan-url: ${{ steps.build.outputs.build-scan-url }} + run-name: ${{ format('{0} | Spring Framework {1} | Java {2}', github.ref_name, matrix.spring.version, matrix.java.version) }} + status: ${{ job.status }} + webhook-url: ${{ secrets.GOOGLE_CHAT_WEBHOOK_URL }} diff --git a/build.gradle b/build.gradle index 1ab2e9908..8424c1242 100644 --- a/build.gradle +++ b/build.gradle @@ -22,7 +22,7 @@ allprojects { dependencyManagement { imports { - mavenBom "org.springframework:spring-framework-bom:6.0.7" + mavenBom "org.springframework:spring-framework-bom:${springFrameworkVersion}" mavenBom "org.springframework.security:spring-security-bom:6.0.2" mavenBom "org.junit:junit-bom:5.7.2" } diff --git a/gradle.properties b/gradle.properties index d3b3952ea..08f5f7032 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,6 @@ version=3.0.1-SNAPSHOT org.gradle.caching=true + +springFrameworkVersion=6.0.7 +springFramework61xVersion=6.1.13 +springFramework62xVersion=6.2.0-SNAPSHOT