From 0b7e443aeabf1c60090df7d100925c516caa9488 Mon Sep 17 00:00:00 2001 From: Hannes Wellmann Date: Thu, 10 Jul 2025 20:52:58 +0200 Subject: [PATCH] [RelEng] Specify P2 repository to publish to Maven as job parameter instead of changing the SDK4Mvn.aggr files to just run the publication job subsequently and then changing it again to the next release cycle's I-build repository. This avoids the described changes and simplifies the release process. --- JenkinsJobs/Builds/build.jenkinsfile | 11 +++++-- JenkinsJobs/Releng/FOLDER.groovy | 29 ++++++------------- JenkinsJobs/Releng/publishToMaven.jenkinsfile | 10 +++++-- RELEASE.md | 4 +-- .../publish-to-maven-central/SDK4Mvn.aggr | 2 +- 5 files changed, 26 insertions(+), 30 deletions(-) diff --git a/JenkinsJobs/Builds/build.jenkinsfile b/JenkinsJobs/Builds/build.jenkinsfile index 8b0fba30860..7625a55c0be 100644 --- a/JenkinsJobs/Builds/build.jenkinsfile +++ b/JenkinsJobs/Builds/build.jenkinsfile @@ -298,10 +298,12 @@ spec: steps { script { for (c in BUILD.testConfigurations) { - build job: "${BUILD.testJobFolder}/${BUILD.testPrefix}-${c.os}-${c.arch}-java${c.javaVersion}", parameters: [string(name: 'buildId', value: "${BUILD_IID}")], wait: false + build job: "${BUILD.testJobFolder}/${BUILD.testPrefix}-${c.os}-${c.arch}-java${c.javaVersion}", wait: false, parameters: [ + string(name: 'buildId', value: "${BUILD_IID}") + ] } } - build job: 'SmokeTests/Start-smoke-tests', parameters: [string(name: 'buildId', value: "${BUILD_IID}")], wait: false + build job: 'SmokeTests/Start-smoke-tests', wait: false, parameters: [string(name: 'buildId', value: "${BUILD_IID}")] } } stage('Trigger publication to Maven snapshots repo') { @@ -314,7 +316,10 @@ spec: } } steps { - build job: 'Releng/PublishToMaven', parameters: [string(name: 'snapshotOrRelease', value: '-snapshot')], wait: false + build job: 'Releng/PublishToMaven', wait: false, parameters: [ + string(name: 'snapshotOrRelease', value: 'snapshot'), + string(name: 'sourceRepository', value: "https://download.eclipse.org/eclipse/updates/${RELEASE_VER}-${BUILD_TYPE}-builds/${BUILD_IID}") + ] } } } diff --git a/JenkinsJobs/Releng/FOLDER.groovy b/JenkinsJobs/Releng/FOLDER.groovy index 82d6f4dd3e8..e30b5a432d9 100644 --- a/JenkinsJobs/Releng/FOLDER.groovy +++ b/JenkinsJobs/Releng/FOLDER.groovy @@ -8,7 +8,7 @@ pipelineJob('Releng/PublishToMaven'){

This job uses the CBI aggregator to produce a Maven-compatible repository with contents as specified by the SDK4Mvn.aggr and -then publishes the artifacts for Eclipse-Platform, JDT and PDE from the output: +then publishes the artifacts for Eclipse-Platform, JDT, Equinox and PDE from the output:

-The source repository to be published is specified via the -local and -remote repository locations. - -For a release build, these should specify the release repository location. -After the release, these should specify the current 4.x-I-Builds. - -

''') parameters { // Define parameters in job configuration to make them available even for the very first build after this job was (re)created. - choiceParam('snapshotOrRelease', ['-snapshot' /*default*/, '-release'], '''\ -

-The source repository to be published is specified via the -local and -remote repository locations -the SDK4Mvn.aggr. - -For a release build, these should specify the release repository location. -After the release, these should specify the current 4.x-I-Builds. - -

+ choiceParam('snapshotOrRelease', ['snapshot' /*default*/, 'release'], '''\ +If this is the publication of a snapshot or a release build. +''') + stringParam('sourceRepository', null, '''\ +The URL of the source P2 repository to be published.
+If this is a release publication, the corresponding release repository should be specified, e.g. 'https://download.eclipse.org/eclipse/updates/4.36/R-4.36-202505281830/'
+For a snapshot publication, the 4.x-I-Builds child repository of the specific build should be specified, e.g. 'https://download.eclipse.org/eclipse/updates/4.37-I-builds/I20250710-1800/'
+If left blank (not recommended), the latest I-build is published. ''') } definition { diff --git a/JenkinsJobs/Releng/publishToMaven.jenkinsfile b/JenkinsJobs/Releng/publishToMaven.jenkinsfile index 8f3eb3fc64b..6d012ec34ee 100644 --- a/JenkinsJobs/Releng/publishToMaven.jenkinsfile +++ b/JenkinsJobs/Releng/publishToMaven.jenkinsfile @@ -27,8 +27,12 @@ pipeline { sh '''#!/bin/bash -e FILE_SDK_AGGR="${WORKSPACE}/git-repo/eclipse.platform.releng/publish-to-maven-central/SDK4Mvn.aggr" + # Set the specified source repository + if [ -n "${sourceRepository}" ]; then + sed -e "s|||" -i ${FILE_SDK_AGGR} + fi # Set whether this is a snapshot build or not - if [ "${snapshotOrRelease}" = "-snapshot" ]; then + if [ "${snapshotOrRelease}" != 'release' ]; then sed -e 's/snapshot=".*"/snapshot="true"/g' -i ${FILE_SDK_AGGR} fi @@ -134,7 +138,7 @@ pipeline { SOURCES_ARG="-Dsources=${sourcesFile}" else SOURCES_ARG="" - echo "No ${sourcesFile}." + echo "Missing sources file ${sourcesFile}." fi if [ -f "${javadocFile}" ]; then @@ -142,7 +146,7 @@ pipeline { JAVADOC_ARG="-Djavadoc=${javadocFile}" else JAVADOC_ARG="" - echo "No ${javadocFile}." + echo "Missing JavaDoc file ${javadocFile}." fi set -x diff --git a/RELEASE.md b/RELEASE.md index 342e936d475..95de5dcf7ff 100644 --- a/RELEASE.md +++ b/RELEASE.md @@ -110,9 +110,7 @@ The actual steps to release - You can subscribe to [cross-project-issues](https://accounts.eclipse.org/mailing-list/cross-project-issues-dev) to get the notifications on Simrel releases. * #### **Publish to Maven central** - Publishing to maven should happen by at least Tuesday before the release since there is up to a 24 hour delay for the maven mirrors. - - Update [SDK4Mvn.aggr](https://github.com/eclipse-platform/eclipse.platform.releng/blob/master/publish-to-maven-central/SDK4Mvn.aggr) to the release build. - - SDK4Mvn.aggr determines what is being published to Maven - - Run the [Publish to Maven](https://ci.eclipse.org/releng/job/Releng/job/PublishToMaven/) job in jenkins with the `-release` parameter. + - Run the [Publish to Maven](https://ci.eclipse.org/releng/job/Releng/job/PublishToMaven/) job in jenkins with the `release` parameter and the release build as `sourceRepository`. - Once that publish job has completed successfully, log into https://oss.sonatype.org/#stagingRepositories and close the Platform, JDT and PDE repositories. - If you do not have an account on oss.sonatype.org for performing the rest of the release request one by creating an issue like https://issues.sonatype.org/browse/OSSRH-43870 to get permissions for platform, JDT and PDE projects and tag an existing release engineer to give approval. * **Contribute to SimRel** diff --git a/eclipse.platform.releng/publish-to-maven-central/SDK4Mvn.aggr b/eclipse.platform.releng/publish-to-maven-central/SDK4Mvn.aggr index 921ca393ff4..be59886eb99 100644 --- a/eclipse.platform.releng/publish-to-maven-central/SDK4Mvn.aggr +++ b/eclipse.platform.releng/publish-to-maven-central/SDK4Mvn.aggr @@ -2,7 +2,7 @@ - +