Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 7 additions & 10 deletions JenkinsJobs/Releng/FOLDER.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -149,19 +149,16 @@ GitHub issue to track tagging the release, for example:
pipelineJob('Releng/makeVisible'){
displayName('Make Visible')
description('''\
The first part of doing a promotion -- the Rename And Promote job -- creates some scripts that make this deferred "make visible" part possible.
Therefore, they have to share a 'workspace', and the output of the first job must remain in place until its time to "make visible".
Make a 'release build', which was previously declared by running the 'Rename And Promote' job, visible.
The first part of a promotion -- the 'Rename And Promote' job -- puts the build at its final location, but keeps it hidden.
Therefore, both jobs have to share a 'workspace', and the output of the first job must remain in place until its time to "make visible".
''')
parameters {
stringParam('DROP_ID', null, '''\
The name (or, build id) of the build to rename and promote. Typically would be a value such as I20160530-2000 or M20160912-1000.
It must match the name of the build on the build machine.
stringParam('releaseBuildID', null, '''\
The id of the 'milestone', 'release-candidate' or 'GA-release' build to make visible.
Typically would be a value such as 'S-4.26M1-202209281800' or 'R-4.36-202505281830'.
It must match the name of the build on the download server.
''')
stringParam('CHECKPOINT', null, 'M1, M3, RC1, RC2, RC3 etc (blank for final releases).')
stringParam('SIGNOFF_BUG', null, 'The issue that was used to "signoff" the checkpoint. If there are no unit test failures, this can be left blank. Otherwise a link is added to test page explaining that "failing unit tests have been investigated".')
stringParam('TRAIN_NAME', null, 'The name of the release stream, typically yyyy-mm. For example: 2022-09')
stringParam('STREAM', null, 'Needs to be all three files of primary version for the release, such as 4.7.1 or 4.8.0.')
stringParam('DL_TYPE', null, "This is the build type we are promoting TO. I-builds promote to 'S' until 'R'.")
}
definition {
cpsScm {
Expand Down
91 changes: 85 additions & 6 deletions JenkinsJobs/Releng/makeVisible.jenkinsfile
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,96 @@ pipeline {
label 'basic'
}
stages {
stage('Make visible') {
stage('Process Input') {
steps {
sshagent(['projects-storage.eclipse.org-bot-ssh', 'github-bot-ssh']) {
sh '''
curl -o makeVisible.sh https://download.eclipse.org/eclipse/relengScripts/cje-production/promotion/makeVisible.sh
chmod +x makeVisible.sh
./makeVisible.sh
script {
if (!params.releaseBuildID) {
error "Required parameter 'releaseBuildID' is not defined."
}
env.RELEASE_ID = params.releaseBuildID.trim()
def releaseIDMatcher = RELEASE_ID =~ /(?<type>[SR])-(?<major>\d+)\.(?<minor>\d+)(.\d+)?((M|RC)\d+[a-z]?)?-\d{12}/
if (!releaseIDMatcher.matches()) {
error "releaseID: ${RELEASE_ID}, does not match the expected pattern."
}
env.RELEASE_TYPE = releaseIDMatcher.group('type')
env.RELEASE_VERSION_MAJOR = releaseIDMatcher.group('major')
env.RELEASE_VERSION_MINOR = releaseIDMatcher.group('minor')
dropIDMatcher = null // release matcher as it's not serializable
}
sh '''
echo 'Input parameters read successfully'
echo "RELEASE_ID='$RELEASE_ID'"
echo "RELEASE_TYPE='$RELEASE_TYPE'"
echo "RELEASE_VERSION_MAJOR='$RELEASE_VERSION_MAJOR'"
echo "RELEASE_VERSION_MINOR='$RELEASE_VERSION_MINOR'"
'''
}
}
stage('Make Download page visible') {
steps {
sshagent(['projects-storage.eclipse.org-bot-ssh']) {
sh '''#!/bin/bash -xe
# Build machine locations (would very seldom change)
DOWNLOAD_ROOT=${DOWNLOAD_ROOT:-/home/data/httpd/download.eclipse.org}
ARCHIVE_ROOT=${ARCHIVE_ROOT:-/home/data/httpd/archive.eclipse.org}
ECLIPSE_MARKER="eclipse/downloads/drops4/${RELEASE_ID}/buildHidden"
EQUINOX_MARKER="equinox/drops/${RELEASE_ID}/buildHidden"
SSH_PREFIX="ssh [email protected]"

${SSH_PREFIX} rm --force "${DOWNLOAD_ROOT}/${ECLIPSE_MARKER}"
${SSH_PREFIX} rm --force "${DOWNLOAD_ROOT}/${EQUINOX_MARKER}"

if [[ "${RELEASE_TYPE}" == 'R' ]]; then
${SSH_PREFIX} rm --force "${ARCHIVE_ROOT}/${ECLIPSE_MARKER}"
${SSH_PREFIX} rm --force "${ARCHIVE_ROOT}/${EQUINOX_MARKER}"
fi
'''
}
build job: 'Releng/updateIndex', wait: false
}
}
stage('Make Release Repository visible') {
when {
environment name: 'RELEASE_TYPE', value: 'R'
}
steps {
sshagent(['projects-storage.eclipse.org-bot-ssh']) {
sh '''
#Repository will be available only for R builds. add it to composite
epDownloadDir=/home/data/httpd/download.eclipse.org/eclipse
dropsPath=${epDownloadDir}/downloads/drops4
workingDir=${epDownloadDir}/workingDir

workspace=${workingDir}/${JOB_NAME}-${BUILD_NUMBER}

ssh [email protected] rm -rf ${workingDir}/${JOB_NAME}*

ssh [email protected] mkdir -p ${workspace}
ssh [email protected] cd ${workspace}

#get latest Eclipse platform product
epRelDir=$(ssh [email protected] ls -d --format=single-column ${dropsPath}/R-*|sort|tail -1)
ssh [email protected] tar -C ${workspace} -xzf ${epRelDir}/eclipse-platform-*-linux-gtk-x86_64.tar.gz

#get requisite tools
ssh [email protected] wget -O ${workspace}/addToComposite.xml https://download.eclipse.org/eclipse/relengScripts/cje-production/scripts/addToComposite.xml

#triggering ant runner
baseBuilderDir=${workspace}/eclipse
javaCMD=/opt/public/common/java/openjdk/jdk-21_x64-latest/bin/java
launcherJar=$(ssh [email protected] find ${baseBuilderDir}/. -name "org.eclipse.equinox.launcher_*.jar" | sort | head -1 )

repoDir=/"home/data/httpd/download.eclipse.org/eclipse/updates/${BUILD_MAJOR}.${BUILD_MINOR}"

devWorkspace=${workspace}/workspace-antRunner
devArgs=-Xmx512m
extraArgs="addToComposite -Drepodir=${repoDir} -Dcomplocation=${RELEASE_ID}"
ssh [email protected] ${javaCMD} -jar ${launcherJar} -nosplash -consolelog -debug -data $devWorkspace -application org.eclipse.ant.core.antRunner -file ${workspace}/addToComposite.xml ${extraArgs} -vmargs $devArgs

ssh [email protected] rm -rf ${workingDir}/${JOB_NAME}*
'''
}
}
}
}
}
5 changes: 2 additions & 3 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,9 +54,8 @@
4. Update the Location property to the "Specific repository for building against" in the mailtemplate.txt from promotion.
5. Commit Simrel updates to Gerrit
- Message should use year-month format, i.e "Simrel updates for Eclipse and Equinox for 2022-06 M1"
* Make the build visible
- Run the [Make Visible](https://ci.eclipse.org/releng/job/Releng/job/makeVisible/) job in Releng jenkins to make the promoted build visible on the download page.
- Parameters should match `Rename and Promote` job
* Run the [Make Visible](https://ci.eclipse.org/releng/job/Releng/job/makeVisible/) job in Releng jenkins to make the promoted build visible on the download page.
- `releaseBuildID`: the full id of the milestone, release-candidate or release build to make visible, e.g. `S-4.26M1-202209281800` or `R-4.36-202505281830`
* Send email that the M1 build is available
- Use the mail template from the promotion build [artifacts](https://ci.eclipse.org/releng/job/Releng/job/renameAndPromote/lastSuccessfulBuild/artifact/) in Jenkins to get the download urls.
- Make sure to mention that the Master branch is now again open for development.
Expand Down
198 changes: 0 additions & 198 deletions cje-production/promotion/makeVisible.sh

This file was deleted.

Loading