Skip to content

Commit 2179a85

Browse files
committed
[RelEng] Unify and rename jobs for promoting and publishing builds
1 parent 7563e22 commit 2179a85

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

JenkinsJobs/Releng/FOLDER.groovy

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -95,18 +95,18 @@ pipelineJob('Releng/prepareNextDevCycle'){
9595
}
9696
}
9797

98-
pipelineJob('Releng/renameAndPromote'){
99-
displayName('Rename and Promote')
98+
pipelineJob('Releng/promoteBuild'){
99+
displayName('Promote Build')
100100
description('''\
101101
This job does the "stage 1" or first part of a promotion.
102-
It renames the files for Equinox and Eclipse, creates an appropriate repo on 'downloads', rsync's everything to 'downloads', but leave everything "invisible" -- unless someone knows the exact URL.
102+
It renames the files for Equinox and Eclipse, creates an appropriate repo on 'downloads', sync's everything to 'downloads', but leave everything "invisible" -- unless someone knows the exact URL.
103103
This allows two things. First, allows artifacts some time to "mirror" when that is needed.
104104
But also, allows the sites and repositories to be examined for correctness before making them visible to the world.
105105
The second (deferred) step that makes things visible works, in part, based on some output of this first step. Hence, they must "share a workspace".
106106
''')
107107
parameters {
108108
stringParam('DROP_ID', null, '''\
109-
The name (or, build id) of the build to rename and promote. Typically would be a value such as I20160530-2000 or M20160912-1000.
109+
The name (or, build id) of the build to promote. Typically would be a value such as 'I20250714-1800'.
110110
It must match the name of the build on the build machine.
111111
''')
112112
stringParam('CHECKPOINT', null, 'M1, M3, RC1, RC2, RC3 etc (blank for final releases).')
@@ -125,7 +125,7 @@ S is used for milestones and includes the milestone version. For example: S4_25_
125125
scm {
126126
github('eclipse-platform/eclipse.platform.releng.aggregator', 'master')
127127
}
128-
scriptPath('JenkinsJobs/Releng/renameAndPromote.jenkinsfile')
128+
scriptPath('JenkinsJobs/Releng/promoteBuild.jenkinsfile')
129129
}
130130
}
131131
}
@@ -155,11 +155,11 @@ GitHub issue to track tagging the release, for example:
155155
}
156156
}
157157

158-
pipelineJob('Releng/makeVisible'){
159-
displayName('Make Visible')
158+
pipelineJob('Releng/publishPromotedBuild'){
159+
displayName('Publish Promoted Build')
160160
description('''\
161-
Make a 'release build', which was previously declared by running the 'Rename And Promote' job, visible.
162-
The first part of a promotion -- the 'Rename And Promote' job -- puts the build at its final location, but keeps it hidden.
161+
Make a 'release build', which was previously declared by running the 'Promote Build' job, visible.
162+
The first part of a promotion -- the 'Promote Build' job -- puts the build at its final location, but keeps it hidden.
163163
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".
164164
''')
165165
parameters {
@@ -175,7 +175,7 @@ It must match the name of the build on the download server.
175175
scm {
176176
github('eclipse-platform/eclipse.platform.releng.aggregator', 'master')
177177
}
178-
scriptPath('JenkinsJobs/Releng/makeVisible.jenkinsfile')
178+
scriptPath('JenkinsJobs/Releng/publishPromotedBuild.jenkinsfile')
179179
}
180180
}
181181
}

JenkinsJobs/Releng/makeVisible.jenkinsfile renamed to JenkinsJobs/Releng/publishPromotedBuild.jenkinsfile

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ pipeline {
1515
if (!params.releaseBuildID) {
1616
error "Required parameter 'releaseBuildID' is not defined."
1717
}
18-
env.RELEASE_ID = params.releaseBuildID.trim()
19-
def releaseIDMatcher = RELEASE_ID =~ /(?<type>[SR])-(?<major>\d+)\.(?<minor>\d+)(.\d+)?((M|RC)\d+[a-z]?)?-\d{12}/
18+
env.RELEASE_BUILD_ID = params.releaseBuildID.trim()
19+
def releaseIDMatcher = env.RELEASE_BUILD_ID =~ /(?<type>[SR])-(?<major>\d+)\.(?<minor>\d+)(\.\d+)?((M|RC)\d+[a-z]?)?-\d{12}/
2020
if (!releaseIDMatcher.matches()) {
21-
error "releaseID: ${RELEASE_ID}, does not match the expected pattern."
21+
error "releaseID: ${RELEASE_BUILD_ID}, does not match the expected pattern."
2222
}
2323
env.RELEASE_TYPE = releaseIDMatcher.group('type')
2424
env.RELEASE_VERSION_MAJOR = releaseIDMatcher.group('major')
@@ -27,31 +27,31 @@ pipeline {
2727
}
2828
sh '''
2929
echo 'Input parameters read successfully'
30-
echo "RELEASE_ID='$RELEASE_ID'"
30+
echo "RELEASE_BUILD_ID='$RELEASE_BUILD_ID'"
3131
echo "RELEASE_TYPE='$RELEASE_TYPE'"
3232
echo "RELEASE_VERSION_MAJOR='$RELEASE_VERSION_MAJOR'"
3333
echo "RELEASE_VERSION_MINOR='$RELEASE_VERSION_MINOR'"
3434
'''
3535
}
3636
}
37-
stage('Make Download page visible') {
37+
stage('Make Download Page visible') {
3838
steps {
3939
sshagent(['projects-storage.eclipse.org-bot-ssh']) {
4040
sh '''#!/bin/bash -xe
4141
# Build machine locations (would very seldom change)
4242
DOWNLOAD_ROOT=${DOWNLOAD_ROOT:-/home/data/httpd/download.eclipse.org}
4343
ARCHIVE_ROOT=${ARCHIVE_ROOT:-/home/data/httpd/archive.eclipse.org}
44-
ECLIPSE_MARKER="eclipse/downloads/drops4/${RELEASE_ID}/buildHidden"
45-
EQUINOX_MARKER="equinox/drops/${RELEASE_ID}/buildHidden"
46-
SSH_PREFIX="ssh [email protected]"
47-
48-
${SSH_PREFIX} rm --force "${DOWNLOAD_ROOT}/${ECLIPSE_MARKER}"
49-
${SSH_PREFIX} rm --force "${DOWNLOAD_ROOT}/${EQUINOX_MARKER}"
50-
44+
ROOT_LOCATIONS=("${DOWNLOAD_ROOT}")
5145
if [[ "${RELEASE_TYPE}" == 'R' ]]; then
52-
${SSH_PREFIX} rm --force "${ARCHIVE_ROOT}/${ECLIPSE_MARKER}"
53-
${SSH_PREFIX} rm --force "${ARCHIVE_ROOT}/${EQUINOX_MARKER}"
46+
ROOT_LOCATIONS+=("${ARCHIVE_ROOT}")
5447
fi
48+
MARKER_FILES=("eclipse/downloads/drops4/${RELEASE_BUILD_ID}/buildHidden" "equinox/drops/${RELEASE_BUILD_ID}/buildHidden")
49+
50+
for rootLocation in "${ROOT_LOCATIONS[@]}"; do
51+
for markerFile in "${MARKER_FILES[@]}"; do
52+
ssh [email protected] rm --force "${rootLocation}/${markerFile}"
53+
done
54+
done
5555
'''
5656
}
5757
build job: 'Releng/updateIndex', wait: false
@@ -64,7 +64,7 @@ pipeline {
6464
steps {
6565
build job: 'Releng/modifyP2CompositeRepository', wait: true, propagate: true, parameters: [
6666
string(name: 'repositoryPath', value: "eclipse/updates/${RELEASE_VERSION_MAJOR}.${RELEASE_VERSION_MINOR}"),
67-
string(name: 'add', value: "${RELEASE_ID}")
67+
string(name: 'add', value: "${RELEASE_BUILD_ID}")
6868
]
6969
}
7070
}

RELEASE.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
* All milestone releases are 'lightweight', meaning there is no announcement or signoff.
2222
No additional builds need to be run, just the daily I-build at 6PM EST.
2323
Thursdays build is promoted to simrel on friday (unless there are problems with Thursdays build, in which case promote Wednesdays) and the compiler is updated if necessary,
24-
but the `Promote` and `Make Visible` jobs don't need to be run.
24+
but the `Promote Build` and `Publish Promoted Build` jobs don't need to be run.
2525
- **Wednesday**:
2626
* Verify that EMF, ECF and Orbit contributions have been included (if applicable).
2727
* Final release candidate build runs at 6PM EST.
@@ -35,15 +35,15 @@
3535
* Just [1 line](https://www.eclipse.org/lists/platform-releng-dev/msg38086.html) asking for sign off on the GitHub issue created in the previous step.
3636
- **Friday**:
3737
* **Promote** the release candidate (if go).
38-
* Run the [Rename and Promote](https://ci.eclipse.org/releng/job/Releng/job/renameAndPromote/) job in Jenkins
38+
* Run the [Promote Build](https://ci.eclipse.org/releng/job/Releng/job/promoteBuild/) job in Jenkins
3939
- DROP_ID: Release candidate build ID (make sure there is no space before or after the ID).
4040
- CHECKPOINT: M1 etc (blank for final releases)
4141
- SIGNOFF_BUG: Needs to be updated to sign-off issue (numeric part only)
4242
- TRAIN_NAME: Whenever the current GA release is planned for (formatted 4 digit year - 2 digit month, i.e `2022-06`)
4343
- STREAM: 4.24.0 etc
4444
- DL_TYPE: S is used to promote I-builds.
4545
- TAG: Parameter should match stream version, i.e `S4_30_0_RC1` etc
46-
- After the build find and open the mail template [artifact](https://ci.eclipse.org/releng/job/Releng/job/renameAndPromote/lastSuccessfulBuild/artifact/) and have it ready.
46+
- After the build find and open the mail template [artifact](https://ci.eclipse.org/releng/job/Releng/job/promoteBuild/lastSuccessfulBuild/artifact/) and have it ready.
4747
- This should automatically run [tag Eclipse release](https://ci.eclipse.org/releng/job/Releng/job/tagEclipseRelease/) to tag the source code.
4848
* Contribute to SimRel
4949
- If you have not already set up SimRel you can do so using Auto Launch [here](https://www.eclipse.org/setups/installer/?url=https://git.eclipse.org/c/oomph/org.eclipse.oomph.git/plain/setups/interim/SimultaneousReleaseTrainConfiguration.setup&show=true)
@@ -54,10 +54,10 @@
5454
4. Update the Location property to the "Specific repository for building against" in the mailtemplate.txt from promotion.
5555
5. Commit Simrel updates to Gerrit
5656
- Message should use year-month format, i.e "Simrel updates for Eclipse and Equinox for 2022-06 M1"
57-
* 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.
58-
- `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`
57+
* Run the [Publish Promoted Build](https://ci.eclipse.org/releng/job/Releng/job/publishPromotedBuild/) job in Releng jenkins to make the promoted build visible on the download page.
58+
- `releaseBuildID`: the full id of the milestone, release-candidate or release build to publish, e.g. `S-4.26M1-202209281800` or `R-4.36-202505281830`
5959
* Send email that the M1 build is available
60-
- 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.
60+
- Use the mail template from the promotion build [artifacts](https://ci.eclipse.org/releng/job/Releng/job/promoteBuild/lastSuccessfulBuild/artifact/) in Jenkins to get the download urls.
6161
- Make sure to mention that the Master branch is now again open for development.
6262
* For **Milestone builds** return the I-builds to the normal schedule.
6363
* **After RC1**
@@ -104,7 +104,7 @@ The actual steps to release
104104

105105
**Friday**
106106
* #### **Promote to GA**
107-
- After Simrel declares RC2 (usually the Friday before release) run the [Rename and Promote](https://ci.eclipse.org/releng/job/Releng/job/renameAndPromote/) job to promote RC2 (or RC2a). If the [daily cleanup for old builds](https://ci.eclipse.org/releng/job/Cleanup/job/dailyCleanOldBuilds/) job was not disabled and the original I-build is no longer available you can use the promoted RC2 build.
107+
- After Simrel declares RC2 (usually the Friday before release) run the [Promote Build](https://ci.eclipse.org/releng/job/Releng/job/promoteBuild/) job to promote RC2 (or RC2a). If the [daily cleanup for old builds](https://ci.eclipse.org/releng/job/Cleanup/job/dailyCleanOldBuilds/) job was not disabled and the original I-build is no longer available you can use the promoted RC2 build.
108108
- Change the DL_TYPE from S to R.
109109
- TAG will be set to R as well, for example `R4_27`
110110
- You can subscribe to [cross-project-issues](https://accounts.eclipse.org/mailing-list/cross-project-issues-dev) to get the notifications on Simrel releases.

0 commit comments

Comments
 (0)