From 5da13d29d269de67b4d862eb5456b31bbc26cebb Mon Sep 17 00:00:00 2001 From: Chris Bono Date: Fri, 13 Oct 2023 17:45:18 -0500 Subject: [PATCH] [CI] Update boot version property at release time --- .github/workflows/ci.yml | 2 +- .github/workflows/prepare-release.yml | 13 ++++----- .../versions/UpdateProjectVersionPlugin.java | 1 + .../versions/UpdateProjectVersionTask.java | 27 ++++++++++++++----- .../versions/UpdateToReleaseVersionTask.java | 12 +++++++++ gradle.properties | 6 ++++- gradle/antora-docs.gradle | 2 +- 7 files changed, 47 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 65f9c09e..567c8185 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: version=$(cat gradle.properties | grep "version=" | awk -F'=' '{print $2}') echo "project_version=$version" >>$GITHUB_OUTPUT build_jdk_17: - name: Build and Deploy Artifacts (JDK 17) + name: Build (JDK 17) needs: [prerequisites] runs-on: ubuntu-latest if: needs.prerequisites.outputs.runjobs diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index 002df4b9..b63fc166 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -7,7 +7,10 @@ on: description: 'Version to release' required: true type: string - + springBootVersion: + description: 'Spring Boot Version (Delivery Vehicle)' + required: true + type: string permissions: contents: read @@ -27,10 +30,7 @@ jobs: token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }} - name: Set up Gradle - uses: spring-io/spring-gradle-build-action@v1 - with: - java-version: '17' - distribution: 'temurin' + uses: spring-io/spring-gradle-build-action@v2 - id: check-open-issues name: Check for open issues @@ -54,9 +54,10 @@ jobs: git config user.name 'github-actions[bot]' git config user.email 'github-actions[bot]@users.noreply.github.com' releaseVersion="${{ inputs.releaseVersion }}" + springBootVersion="${{ inputs.springBootVersion }}" releaseBranch="release-initiate/$releaseVersion" git checkout -b $releaseBranch - ./gradlew :updateToReleaseVersion -PreleaseVersion=$releaseVersion + ./gradlew :updateToReleaseVersion -PreleaseVersion=$releaseVersion -PspringBootVersion=$springBootVersion git commit -am "[Release $releaseVersion] Update version" git push origin $releaseBranch gh pr create --title "[Release $releaseVersion] Update version" --body "Merge to initiate release." diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionPlugin.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionPlugin.java index 655e3b56..65f37ca0 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionPlugin.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionPlugin.java @@ -26,6 +26,7 @@ public class UpdateProjectVersionPlugin implements Plugin { updateToReleaseVersionTask.setGroup("Release"); updateToReleaseVersionTask.setDescription("Updates the project version to the next release in gradle.properties"); updateToReleaseVersionTask.setReleaseVersion((String) project.findProperty("releaseVersion")); + updateToReleaseVersionTask.setSpringBootVersion((String) project.findProperty("springBootVersion")); }); project.getTasks().register("updateToSnapshotVersion", UpdateToSnapshotVersionTask.class, updateToSnapshotVersionTask -> { updateToSnapshotVersionTask.setGroup("Release"); diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionTask.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionTask.java index 71cb2595..2208675e 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionTask.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateProjectVersionTask.java @@ -17,25 +17,38 @@ package org.springframework.pulsar.gradle.versions; import java.io.File; +import java.util.Objects; +import java.util.function.Function; import org.gradle.api.DefaultTask; import org.gradle.api.Project; -import org.gradle.api.tasks.Input; -import org.gradle.api.tasks.TaskAction; public abstract class UpdateProjectVersionTask extends DefaultTask { protected void updateVersionInGradleProperties(String newVersion) { - String currentVersion = getProject().getVersion().toString(); + this.updatePropertyInGradleProperties("version", (p) -> p.getVersion().toString(), newVersion); + } + + protected void updatePropertyInGradleProperties(String propertyName, String newPropertyValue) { + this.updatePropertyInGradleProperties(propertyName, + (p) -> Objects.toString(p.findProperty(propertyName), ""), newPropertyValue); + } + + protected void updatePropertyInGradleProperties( + String propertyName, + Function currentPropertyValueFromProject, + String newPropertyValue) { + String currentPropertyValue = currentPropertyValueFromProject.apply(getProject()); File gradlePropertiesFile = getProject().getRootProject().file(Project.GRADLE_PROPERTIES); if (!gradlePropertiesFile.exists()) { - throw new RuntimeException("No gradle.properties to update version in"); + throw new RuntimeException("No gradle.properties to update property in"); } - System.out.printf("Updating the project version in %s from %s to %s%n", - Project.GRADLE_PROPERTIES, currentVersion, newVersion); + System.out.printf("Updating the %s property in %s from %s to %s%n", + propertyName, Project.GRADLE_PROPERTIES, currentPropertyValue, newPropertyValue); FileUtils.replaceFileText(gradlePropertiesFile, (gradlePropertiesText) -> { gradlePropertiesText = gradlePropertiesText.replace( - "version=" + currentVersion, "version=" + newVersion); + "%s=%s".formatted(propertyName, currentPropertyValue), + "%s=%s".formatted(propertyName, newPropertyValue)); return gradlePropertiesText; }); } diff --git a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateToReleaseVersionTask.java b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateToReleaseVersionTask.java index 6e897182..8475b33a 100644 --- a/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateToReleaseVersionTask.java +++ b/buildSrc/src/main/java/org/springframework/pulsar/gradle/versions/UpdateToReleaseVersionTask.java @@ -24,9 +24,13 @@ public abstract class UpdateToReleaseVersionTask extends UpdateProjectVersionTas @Input private String releaseVersion; + @Input + private String springBootVersion; + @TaskAction public void updateToReleaseVersion() { updateVersionInGradleProperties(this.releaseVersion); + updatePropertyInGradleProperties("springBootVersionForDocs", this.springBootVersion); } public String getReleaseVersion() { @@ -36,4 +40,12 @@ public abstract class UpdateToReleaseVersionTask extends UpdateProjectVersionTas public void setReleaseVersion(String releaseVersion) { this.releaseVersion = releaseVersion; } + + public String getSpringBootVersion() { + return springBootVersion; + } + + public void setSpringBootVersion(String springBootVersion) { + this.springBootVersion = springBootVersion; + } } diff --git a/gradle.properties b/gradle.properties index 1547c82e..ba1c8809 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,6 +8,10 @@ pulsarClientVersion=3.1.0 pulsarClientReactiveVersion=0.4.0 springFrameworkVersion=6.1.0-RC1 -# only used by docs, tests, and samples (unpublished deps) +# only used by integration tests and samples (unpublished deps) springBootVersion=3.2.0-SNAPSHOT + +# only used for docs +springBootVersionForDocs=3.2.0-SNAPSHOT + springCloudStreamVersion=4.1.0-SNAPSHOT diff --git a/gradle/antora-docs.gradle b/gradle/antora-docs.gradle index 8fed37e3..80e986b0 100644 --- a/gradle/antora-docs.gradle +++ b/gradle/antora-docs.gradle @@ -36,7 +36,7 @@ tasks.create('generateAntoraResources') { } def generateAttributes() { - return ['spring-boot-version': project.springBootVersion ?: 'current', + return ['spring-boot-version': project.springBootVersionForDocs ?: 'current', 'spring-framework-version': project.springFrameworkVersion ?: 'current', 'spring-cloud-stream-version': project.springCloudStreamVersion ?: 'current', 'spring-pulsar-version': project.version,