Skip to content

Commit 3b36c20

Browse files
committed
improvements to the structure of release-related tasks
1 parent c90aa25 commit 3b36c20

File tree

6 files changed

+91
-52
lines changed

6 files changed

+91
-52
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,15 +43,15 @@ plugins {
4343
// Releasing
4444

4545
tasks.register( 'releasePrepare' ) {
46-
group 'stages'
46+
group "release-prepare"
4747
description "Scripted release 'Release Prepare' stage. " +
4848
"Includes various checks as to the publish-ability of the project: testing, generation, etc. " +
4949
"Sub-projects register their own `releasePrepare` to hook into this stage."
5050
// See `:release:releasePrepare` which does a lot of heavy lifting here
5151
}
5252

5353
tasks.register( 'releasePerform' ) {
54-
group 'stages'
54+
group "release-perform"
5555
description "Scripted release 'Release Perform' stage. " +
5656
"Generally this entails publishing artifacts to various servers. " +
5757
"Sub-projects register their own `releasePerform` to hook into this stage."

local-build-plugins/src/main/groovy/local.publishing-java-module.gradle

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,26 @@ publishingExtension.publications.named("publishedArtifacts", MavenPublication) {
3535
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3636
// Releasing
3737

38-
tasks.register("releasePrepare") {
38+
def releasePrepareTask = tasks.register("releasePrepare") {
3939
group "release"
4040
description "See :release:releasePrepare for details. Here we hook in testing and checks ensure publish-ability"
4141

42-
dependsOn tasks.test
42+
dependsOn tasks.check
4343
dependsOn tasks.generateMetadataFileForPublishedArtifactsPublication
4444
dependsOn tasks.generatePomFileForPublishedArtifactsPublication
4545
}
4646

47+
// used from the h2 CI job
48+
tasks.register("preVerifyRelease") {
49+
group "release-prepare"
50+
description "Delegates to `releasePrepare` task"
51+
52+
dependsOn releasePrepareTask
53+
}
54+
4755
tasks.register( 'releasePerform' ) {
48-
group "release"
56+
group "release-perform"
4957
description "See :release:releasePerform for details. Here we hook in publishing to Sonatype"
5058

5159
dependsOn tasks.publishToSonatype
5260
}
53-

local-build-plugins/src/main/java/org/hibernate/build/OrmBuildDetails.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
package org.hibernate.build;
66

77
import org.gradle.api.Project;
8+
import org.gradle.api.file.RegularFile;
9+
import org.gradle.api.provider.Provider;
810

911
import javax.inject.Inject;
1012
import java.io.File;
@@ -15,29 +17,33 @@
1517
* @author Steve Ebersole
1618
*/
1719
public abstract class OrmBuildDetails {
20+
private final ReleaseDetails releaseDetails;
21+
private final Provider<File> versionFileAccess;
1822
private final HibernateVersion hibernateVersion;
19-
private final JpaVersion jpaVersion;
2023

21-
private final ReleaseDetails releaseDetails;
24+
private final JpaVersion jpaVersion;
2225

2326
private final String databaseName;
2427

2528
@Inject
2629
public OrmBuildDetails(Project project) {
2730
releaseDetails = new ReleaseDetails( project );
31+
versionFileAccess = project.provider( () -> new File( project.getRootDir(), HibernateVersion.RELATIVE_FILE ) );
2832

29-
this.hibernateVersion = releaseDetails.getReleaseVersion() != null
33+
hibernateVersion = releaseDetails.getReleaseVersion() != null
3034
? releaseDetails.getReleaseVersion()
31-
: fromVersionFile( new File( project.getRootDir(), HibernateVersion.RELATIVE_FILE ) );
32-
33-
35+
: fromVersionFile( versionFileAccess.get() );
3436
project.setVersion( hibernateVersion.getFullName() );
3537

3638
jpaVersion = JpaVersion.from( project );
3739

3840
databaseName = (String) project.property( "db" );
3941
}
4042

43+
public Provider<File> getVersionFileAccess() {
44+
return versionFileAccess;
45+
}
46+
4147
public HibernateVersion getHibernateVersion() {
4248
return hibernateVersion;
4349
}

release/release.gradle

Lines changed: 31 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,6 @@ plugins {
1818
id "idea"
1919
}
2020

21-
def hibernateVersion = ormBuildDetails.hibernateVersion
22-
def releaseDetails = ormBuildDetails.releaseDetails
23-
2421
idea.module {
2522
}
2623

@@ -48,7 +45,7 @@ tasks.build.enabled false
4845
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
4946

5047
def releaseChecksTask = tasks.register( "releaseChecks" ) {
51-
group 'prepare'
48+
group 'release-prepare'
5249
description 'Checks and preparation for release'
5350

5451
doFirst {
@@ -105,79 +102,78 @@ def releaseChecksTask = tasks.register( "releaseChecks" ) {
105102
}
106103

107104
def changeLogFileTask = tasks.register( "changeLogFile" ) {
108-
group 'Release'
105+
group 'release-prepare'
109106
description 'Updates the changelog.txt file based on the change-log report from Jira'
110107
dependsOn releaseChecksTask
111108

112109
doFirst {
113110
logger.lifecycle( "Appending version `${project.releaseVersion}` to changelog..." )
114-
ChangeLogFile.update( hibernateVersion.fullName );
111+
ChangeLogFile.update( ormBuildDetails.hibernateVersion.fullName );
115112
}
116113
}
117114

118115
def changeToReleaseVersionTask = tasks.register( "changeToReleaseVersion" ) {
119-
group 'Release'
116+
group 'release-prepare'
120117
description 'Updates `gradle/version.properties` file to the specified release-version'
121118

122119
dependsOn releaseChecksTask
123120

124121
doFirst {
125-
logger.lifecycle( "Updating version-file to release-version : `${project.releaseVersion}`" )
126-
updateVersionFile( project.releaseVersion )
122+
def releaseVersion = ormBuildDetails.releaseDetails.releaseVersion
123+
logger.lifecycle( "Updating version-file to release-version : `${releaseVersion}`" )
124+
updateVersionFile( releaseVersion )
127125
}
128126
}
129127

130128
def gitPreStepsTask = tasks.register( 'gitPreSteps' ) {
131-
group "prepare"
129+
group "release-prepare"
132130
description "update changelog, update version file and commit"
133131

134132
dependsOn releaseChecksTask
135133
dependsOn changeLogFileTask
136134
dependsOn changeToReleaseVersionTask
137135

138136
doLast {
139-
logger.lifecycle( "Performing pre-steps Git commit : `${project.releaseVersion}`" )
137+
def releaseVersion = ormBuildDetails.releaseDetails.releaseVersion
138+
logger.lifecycle( "Performing pre-steps Git commit : `${releaseVersion}`" )
140139
executeGitCommand( 'add', '.' )
141-
executeGitCommand( 'commit', '-m', "Pre-steps for release : `${hibernateVersion.fullName}`" )
140+
executeGitCommand( 'commit', '-m', "Pre-steps for release : `${releaseVersion.fullName}`" )
142141
}
143142
}
144143

145-
def changeToDevelopmentVersionTask = tasks.register( 'changeToDevelopmentVersion' ) {
146-
group 'Release'
147-
description 'Updates `gradle/version.properties` file to the specified development-version'
148-
149-
dependsOn releaseChecksTask
144+
def gitPostStepsTask = tasks.register( 'gitPostSteps' ) {
145+
group "release-prepare"
146+
description "possibly create tag. update version-file and commit "
150147

151148
doFirst {
152-
logger.lifecycle( "Updating version-file to development-version : `${project.developmentVersion}`" )
153-
updateVersionFile( project.developmentVersion )
154149
}
155-
}
156-
157-
def gitPostStepsTask = tasks.register( 'gitPostSteps' ) {
158-
group "prepare"
159-
description "possibly create tag. update version-file and commit "
160-
dependsOn changeToDevelopmentVersionTask
161150

162151
doLast {
152+
def releaseDetails = ormBuildDetails.releaseDetails
153+
def releaseVersion = releaseDetails.releaseVersion
154+
def developmentVersion = releaseDetails.developmentVersion
155+
163156
if ( releaseDetails.shouldCreateTag ) {
164-
logger.lifecycle( "Tagging release : `${project.releaseTag}`..." )
165-
executeGitCommand( 'tag', '-a', project.releaseTag, '-m', "Release $hibernateVersion.fullName" )
157+
logger.lifecycle( "Tagging release : `${releaseDetails.tagNameToUse}`..." )
158+
executeGitCommand( 'tag', '-a', releaseDetails.tagNameToUse, '-m', "Release $releaseVersion.fullName" )
166159
}
167160

168-
logger.lifecycle( "Performing post-steps Git commit : `${project.releaseVersion}`" )
161+
logger.lifecycle( "Updating version-file to development-version : `${developmentVersion.fullName}`" )
162+
updateVersionFile( developmentVersion )
163+
164+
logger.lifecycle( "Performing post-steps Git commit : `${releaseVersion}`" )
169165
executeGitCommand( 'add', '.' )
170-
executeGitCommand( 'commit', '-m', "Post-steps for release : `${hibernateVersion.fullName}`" )
166+
executeGitCommand( 'commit', '-m', "Post-steps for release : `${releaseVersion.fullName}`" )
171167
}
172168
}
173169

174170
void updateVersionFile(String version) {
175171
logger.lifecycle( "Updating `gradle/version.properties` version to `${version}`" )
176-
project.extensions.ormBuildDetails.versionFile.get().text = "hibernateVersion=${version}"
172+
ormBuildDetails.versionFileAccess.get().text = "ormBuildDetails.hibernateVersion=${version}"
177173
}
178174

179175
tasks.register("releasePrepare") {
180-
group "stages"
176+
group "release-prepare"
181177
description "Scripted release 'Release Prepare' stage"
182178

183179
dependsOn releaseChecksTask
@@ -387,12 +383,12 @@ def assembleDocumentationTask = tasks.register( "assembleDocumentation" ) {
387383
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
388384

389385
def uploadDocumentationTask = tasks.named( "uploadDocumentation" ) {
390-
group = "documentation"
386+
group = "release-perform"
391387
description = "Uploads assembled documentation to the doc server"
392388
dependsOn assembleDocumentationTask
393389

394390
doFirst {
395-
if ( hibernateVersion.isSnapshot ) {
391+
if ( ormBuildDetails.hibernateVersion.isSnapshot ) {
396392
logger.error( "Cannot perform upload of SNAPSHOT documentation" );
397393
throw new RuntimeException( "Cannot perform upload of SNAPSHOT documentation" );
398394
}
@@ -407,14 +403,14 @@ def uploadDocumentationTask = tasks.named( "uploadDocumentation" ) {
407403
}
408404

409405
tasks.register( 'releasePerform' ) {
410-
group 'stages'
406+
group = "release-perform"
411407
description "Scripted release 'Release Perform' stage"
412408

413409
dependsOn uploadDocumentationTask
414410
dependsOn uploadDocumentationDescriptor
415411

416412
doLast {
417-
if ( releaseDetails.shouldCreateTag ) {
413+
if ( ormBuildDetails.releaseDetails.shouldCreateTag ) {
418414
logger.lifecycle( "Pushing branch and tag to remote `${project.gitRemote}`..." )
419415
executeGitCommand( 'push', '--atomic', project.gitRemote, project.gitBranch, project.releaseTag )
420416
}

tooling/hibernate-gradle-plugin/hibernate-gradle-plugin.gradle

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -65,15 +65,23 @@ test {
6565
}
6666
}
6767

68-
tasks.register("releasePrepare") {
69-
group "release"
70-
description "See :release:releasePrepare for details. Here we hook in testing"
68+
def releasePrepareTask = tasks.register("releasePrepare") {
69+
group "release-prepare"
70+
description "See :release:releasePrepare for details. Here we hook in the `check` task."
7171

72-
dependsOn tasks.test
72+
dependsOn tasks.check
73+
}
74+
75+
// used from the h2 CI job
76+
tasks.register("preVerifyRelease") {
77+
group "release-prepare"
78+
description "Delegates to `releasePrepare` task"
79+
80+
dependsOn releasePrepareTask
7381
}
7482

7583
tasks.register("releasePerform") {
76-
group "release"
84+
group "release-perform"
7785
description "See :release:releasePerform for details. Here we hook in publishing to the Plugin Portal"
7886

7987
dependsOn tasks.publishPlugins

tooling/hibernate-maven-plugin/hibernate-maven-plugin.gradle

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,28 @@ dependencies {
2222
implementation "org.apache.maven.shared:file-management:3.1.0"
2323
}
2424

25+
def releasePrepareTask = tasks.register("releasePrepare") {
26+
group "release-prepare"
27+
description "See :release:releasePrepare for details. Here we hook in the `check` task."
28+
29+
dependsOn tasks.check
30+
}
31+
32+
// used from the h2 CI job
33+
tasks.register("preVerifyRelease") {
34+
group "release-prepare"
35+
description "Delegates to `releasePrepare` task"
36+
37+
dependsOn releasePrepareTask
38+
}
39+
40+
tasks.register( 'releasePerform' ) {
41+
group "release-perform"
42+
description "See :release:releasePerform for details. Here we hook in publishing to Sonatype"
43+
44+
dependsOn tasks.publishAllPublicationsToSonatypeRepository
45+
}
46+
2547
var publishingExtension = project.getExtensions().getByType(PublishingExtension) as PublishingExtension
2648
publishingExtension.publications.named("publishedArtifacts") {
2749
from components.java

0 commit comments

Comments
 (0)