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
This commit is contained in:
Stéphane Nicoll
2024-10-10 14:04:59 +02:00
parent 6b5200fc39
commit 88ce1a7990
4 changed files with 53 additions and 2 deletions

View File

@@ -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' }}

44
.github/workflows/ci.yml vendored Normal file
View File

@@ -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 }}

View File

@@ -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"
}

View File

@@ -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