From 044f3cdc35723eeda5deaf40b7b1bd901a41f747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Mon, 26 May 2025 15:54:47 +0200 Subject: [PATCH 1/3] Clearer stage names in release process --- ci/release/Jenkinsfile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ci/release/Jenkinsfile b/ci/release/Jenkinsfile index 0e57fec97c02..c76a40848c33 100644 --- a/ci/release/Jenkinsfile +++ b/ci/release/Jenkinsfile @@ -98,7 +98,7 @@ pipeline { ) } stages { - stage('Release check') { + stage('Check') { steps { script { print "INFO: params.RELEASE_VERSION = ${params.RELEASE_VERSION}" @@ -177,7 +177,7 @@ pipeline { } } } - stage('Release prepare') { + stage('Prepare') { steps { script { checkoutReleaseScripts() @@ -203,7 +203,7 @@ pipeline { } } } - stage('Publish release') { + stage('Publish') { steps { script { checkoutReleaseScripts() @@ -243,7 +243,7 @@ pipeline { } } } - stage('Website release') { + stage('Update website') { steps { script { checkoutReleaseScripts() @@ -270,7 +270,7 @@ pipeline { } } } - stage('GitHub release') { + stage('Create GitHub release') { steps { script { checkoutReleaseScripts() From 844f1b9f6cc6113853269508e8fea6453b9c63e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Mon, 26 May 2025 17:45:11 +0200 Subject: [PATCH 2/3] Use a script to release on Jira --- ci/release/Jenkinsfile | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ci/release/Jenkinsfile b/ci/release/Jenkinsfile index c76a40848c33..c82345139666 100644 --- a/ci/release/Jenkinsfile +++ b/ci/release/Jenkinsfile @@ -243,6 +243,17 @@ pipeline { } } } + stage('Release on Jira') { + steps { + script { + checkoutReleaseScripts() + + withCredentials([string(credentialsId: 'release-webhook.hibernate.atlassian.net', variable: 'JIRA_WEBHOOK_SECRET')]) { + sh ".release/scripts/jira-release.sh ${env.SCRIPT_OPTIONS} ${env.PROJECT} ${env.RELEASE_VERSION} ${env.DEVELOPMENT_VERSION}" + } + } + } + } stage('Update website') { steps { script { From 1e6457690256eabc54cbc07275d26dc32eaed898 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yoann=20Rodi=C3=A8re?= Date: Wed, 28 May 2025 12:19:18 +0200 Subject: [PATCH 3/3] Avoid auto-release when there are no "releasable" commits The determination of "releasable" is in the release scripts, but currently it boils down to having a Jira key in the commit message. --- ci/release/Jenkinsfile | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/ci/release/Jenkinsfile b/ci/release/Jenkinsfile index c82345139666..a3f017bf40c1 100644 --- a/ci/release/Jenkinsfile +++ b/ci/release/Jenkinsfile @@ -116,13 +116,6 @@ pipeline { def releaseVersion def developmentVersion - def lastCommitter = sh(script: 'git show -s --format=\'%an\'', returnStdout: true).trim() - def secondLastCommitter = sh(script: 'git show -s --format=\'%an\' HEAD~1', returnStdout: true).trim() - def isCiLastCommiter = lastCommitter == 'Hibernate-CI' && secondLastCommitter == 'Hibernate-CI' - - echo "Last two commits were performed by '${lastCommitter}'/'${secondLastCommitter}'." - echo "Is 'Hibernate-CI' the last commiter: '${isCiLastCommiter}'." - if ( manualRelease ) { echo "Release was requested manually" @@ -140,10 +133,13 @@ pipeline { else { echo "Release was triggered automatically" - // Avoid doing an automatic release for commits from a release - - if (isCiLastCommiter) { - print "INFO: Automatic release skipped because last commits were for the previous release" + // Avoid doing an automatic release if there are no "releasable" commits since the last release (see release scripts for determination) + def releasableCommitCount = sh( + script: ".release/scripts/count-releasable-commits.sh ${env.PROJECT}", + returnStdout: true + ).trim().toInteger() + if ( releasableCommitCount <= 0 ) { + print "INFO: Automatic release skipped because no releasable commits were pushed since the previous release" currentBuild.getRawBuild().getExecutor().interrupt(Result.NOT_BUILT) sleep(1) // Interrupt is not blocking and does not take effect immediately. return