Skip to content

Commit 95663eb

Browse files
committed
[RelEng] Update build configuration in release preparation pipeline
and simplify the definition and activation of the RC schedule: Update the cron-trigger to it's final value immediately. The extra builds are then triggered when the RC period arrives without activating that schedule manually.
1 parent 4977592 commit 95663eb

File tree

4 files changed

+41
-29
lines changed

4 files changed

+41
-29
lines changed

JenkinsJobs/Builds/FOLDER.groovy

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,11 @@ for (STREAM in config.Streams){
1414
triggers {
1515
cron {
1616
spec('''TZ=America/Toronto
17-
# format: Minute Hour Day Month Day of the week (0-7)
18-
17+
# Format: Minute Hour Day Month Day-of-week (1-7)
1918
# - - - Integration Eclipse SDK builds - - -
20-
# 2025-09 Release Schedule
21-
# Normal : 6 PM every day (11/6 - 27/8)
22-
# 0 18 * * *
23-
24-
25-
# RC Schedule
26-
# Post M3, no nightlies, I-builds only. (Be sure to "turn off" for tests and sign off days)
27-
# 0 6 15-27 8 5-7,1-3
28-
# 0 18 15-27 8 5-7,1-3
19+
# Schedule: 6 PM every day until end of RC2
20+
0 18 * 5-7 *
21+
0 18 1-27 8 *
2922
''')
3023
}
3124
}

JenkinsJobs/Releng/prepareNextDevCycle.jenkinsfile

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,10 @@ pipeline {
4747
// E.g. next to: https://github.com/eclipse-simrel/.github/blob/main/wiki/SimRel/2025-09.md
4848
def m1Date = parseDate(readParameter('M1_DATE'))
4949
def m2Date = parseDate(readParameter('M2_DATE'))
50+
//TODO: do we still need this?
5051
def m3Date = parseDate(readParameter('M3_DATE'))
5152
def rc1Date = parseDate(readParameter('RC1_DATE'))
52-
def rc2Date = parseDate(readParameter('RC2_DATE'))
53+
rc2Date = parseDate(readParameter('RC2_DATE'))
5354
def gaDate = parseDate(readParameter('GA_DATE'))
5455
if (!(m1Date < m2Date && m2Date < m3Date && m3Date < rc1Date && rc1Date < rc2Date && rc2Date < gaDate)) {
5556
error "Dates are not in strictly ascending order: ${M1_DATE}, ${M2_DATE}, ${M3_DATE}, ${RC1_DATE}, ${RC2_DATE}, ${GA_DATE}"
@@ -136,6 +137,30 @@ pipeline {
136137
replaceInFile('production/testScripts/configuration/streamSpecific.properties', [
137138
"for ${PREVIOUS_RELEASE_VERSION}.0 builds" : "for ${NEXT_RELEASE_VERSION}.0 builds",
138139
])
140+
replaceInFile('JenkinsJobs/JobDSL.json', [
141+
/"${PREVIOUS_RELEASE_VERSION}"/ : /"${NEXT_RELEASE_VERSION}"/,
142+
])
143+
script {
144+
def now = java.time.LocalDate.now()
145+
def rcEnd = rc2Date.minusDays(2) // Wednesday before RC2 is the last planned I-build
146+
// if (rcEnd < now || now.until(rcEnd).toTotalMonths() > 10) {
147+
// // This enire logic is based on the assumption that the rc-end is (clearly) less then a year ahead (and not in the past).
148+
// // Fail to make callers aware that this part has to be reworked, in case the release schedule changes that much.
149+
// error "RC end is in the past or almost a year (or more) ahead."
150+
// }
151+
def completeMonthsStart = now.monthValue
152+
def completeMonthsEnd = rcEnd.monthValue - 1
153+
// Consider end-of-year overflows
154+
def completeMonths = (completeMonthsStart < completeMonthsEnd) ? "${completeMonthsStart}-${completeMonthsEnd}" : "${completeMonthsStart}-12,1-${completeMonthsEnd}"
155+
def rcSchedule = """\
156+
0 18 * ${completeMonths} *
157+
0 18 1-${rcEnd.dayOfMonth} ${rcEnd.monthValue} *
158+
""".stripIndent().trim()
159+
echo "RC schedule:\n${rcSchedule}"
160+
replaceAllInFile('JenkinsJobs/Builds/FOLDER.groovy', [
161+
"(?<prefix># Schedule:.*\\R)(?s).*(?<suffix>\\R'''\\))" : '${prefix}'+rcSchedule+'${suffix}',
162+
])
163+
}
139164

140165
commitAllChangesExcludingSubmodules("Update versions to ${NEXT_RELEASE_VERSION} in build scripts")
141166
}
@@ -408,6 +433,8 @@ pipeline {
408433

409434
@groovy.transform.Field
410435
def githubAPI = null
436+
@groovy.transform.Field
437+
def rc2Date = null
411438

412439
// --- utility methods
413440

JenkinsJobs/YBuilds/FOLDER.groovy

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,10 @@ for (STREAM in config.Streams){
1515
triggers {
1616
cron {
1717
spec('''TZ=America/Toronto
18-
# format: Minute Hour Day Month Day of the week (0-7)
19-
20-
#Daily Y-build
21-
0 10 * * *
22-
#milestone week
23-
#0 6 * * 2
24-
#0 6 * * 4
25-
#
26-
#0 2 21 7 4
18+
# Format: Minute Hour Day Month Day-of-week (1-7)
19+
# - - - Beta Java Eclipse SDK builds - - -
20+
# Schedule: 10 AM every second day
21+
0 10 * * 2,4,6
2722
''')
2823
}
2924
}

RELEASE.md

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
## Milestone and RC Releases
66

77
### Friday before release week:
8-
* Update [I-builds job definition](JenkinsJobs/Builds/FOLDER.groovy) to build on the milestone schedule (Twice daily at 06:00 EST and 18:00 EST except Thursday).
98
* Create or update prerequisite issues for tracking ECF, EMF and Orbit
109
* Send reminder email for upcoming RC week to [email protected], [email protected], [email protected] and [email protected]
1110
* [Example from 4.30 RC1](https://www.eclipse.org/lists/platform-dev/msg03924.html) but the usual schedule:
@@ -49,9 +48,7 @@
4948
4. Update the Location property to the "Specific repository for building against" in the mailtemplate.txt from promotion.
5049
5. Commit Simrel updates to Gerrit
5150
- Message should use year-month format, i.e "Simrel updates for Eclipse and Equinox for 2022-06 M1"
52-
* For **Milestone builds** return the I-builds to the normal schedule.
5351
* **After RC1**
54-
* Leave the I-builds running on the milestone schedule for RC2.
5552
* Comment on EMF, ECF and Orbit issues to ask for final release builds.
5653
* **After RC2**
5754
* (optional) Disable the automatic [nightly cleanup](https://ci.eclipse.org/releng/job/Cleanup/job/dailyCleanOldBuilds/) of I-builds
@@ -165,12 +162,12 @@ The release is scheduled for 10AM EST. Typically the jobs are scheduled beforeha
165162
- Issue for the 2023 releases is [https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/2336](https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/2336)
166163

167164
#### **Update Jenkins for the next Release:**
168-
- Edit the [JobDSL.json](JenkinsJobs/JobDSL.json)
169-
* Add the next release version to the `Streams` key item.
170-
* In the `branches` item update the current release to map to the maintenance branch and add a new key:value pair mapping the next release to master.
171165
- Run the [Create Jobs](https://ci.eclipse.org/releng/job/Create%20Jobs/) job in Jenkins.
172-
This should move the current I-builds to run on the maintenance branch and create new I-builds for the next release.
173-
Performance and Unit tests should also be generated for the new release automatically.
166+
But until the preparation work has completed, the new I-builds should not be triggered in order to avoid undesired interference. To ensure this, either
167+
- Run the `Create Jobs` job only after all preparation work is reviewed and submitted and the first I-build can run.
168+
- Disable the new `I-build` job until it's ready to run it the first time.
169+
In order to investigate the state of the I-build it's probably also good to disable the job again after the first I-build has completed, until the master is open for regular development.
170+
- Move the previous (still existing) I-Build job to run on the maintenance branch (and remove it's cron trigger). That job can be deleted (together with its test jobs), when we are sure RC respins won't happen anymore.
174171

175172
#### **Create Git Milestones for the next Release:**
176173

0 commit comments

Comments
 (0)