Skip to content

Commit c67831f

Browse files
committed
[RelEng] Update build configuration in release preparation pipeline
and simplify the CRON expressions that define the I/Y-build schedules: - Drop the RC phase with additional builds because that late in the dev-cycle many changes are not expected/desired. If necessary an extra build can still be triggered manually. - Define the CRON expressions for I-builds so that the schedule automatically ends with the end of RC2. This avoids the need to change the CRON-trigger definition manually at the end of the RC phase.
1 parent 4977592 commit c67831f

File tree

4 files changed

+30
-28
lines changed

4 files changed

+30
-28
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: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,17 @@ pipeline {
5858
assignEnvVariable('NEXT_RELEASE_MONTH', String.format("%02d", gaDate.monthValue))
5959
assignEnvVariable('NEXT_RELEASE_NAME', "${NEXT_RELEASE_YEAR}-${NEXT_RELEASE_MONTH}")
6060
assignEnvVariable('MAINTENANCE_BRANCH', "R${PREVIOUS_RELEASE_VERSION_MAJOR}_${PREVIOUS_RELEASE_VERSION_MINOR}_maintenance")
61+
62+
// Compute new build schedule
63+
def now = java.time.LocalDate.now()
64+
def rcEnd = rc2Date.minusDays(2) // Wednesday before RC2 is the last planned I-build and the cron-triggers should stop after
65+
def lastCompleteMonth = rcEnd.monthValue - 1
66+
// Consider end-of-year overflows
67+
def completeMonths = (now.monthValue < lastCompleteMonth) ? "${now.monthValue}-${lastCompleteMonth}" : "${now.monthValue}-12,1-${lastCompleteMonth}"
68+
assignEnvVariable('I_BUILD_SCHEDULE', """\
69+
0 18 * ${completeMonths} *
70+
0 18 1-${rcEnd.dayOfMonth} ${rcEnd.monthValue} *
71+
""".stripIndent().trim())
6172
}
6273
}
6374
}
@@ -136,6 +147,12 @@ pipeline {
136147
replaceInFile('production/testScripts/configuration/streamSpecific.properties', [
137148
"for ${PREVIOUS_RELEASE_VERSION}.0 builds" : "for ${NEXT_RELEASE_VERSION}.0 builds",
138149
])
150+
replaceInFile('JenkinsJobs/JobDSL.json', [
151+
/"${PREVIOUS_RELEASE_VERSION}"/ : /"${NEXT_RELEASE_VERSION}"/,
152+
])
153+
replaceAllInFile('JenkinsJobs/Builds/FOLDER.groovy', [
154+
"(?<prefix># Schedule:.*\\R)(?s).*(?<suffix>\\R'''\\))" : "\${prefix}${I_BUILD_SCHEDULE}\${suffix}",
155+
])
139156

140157
commitAllChangesExcludingSubmodules("Update versions to ${NEXT_RELEASE_VERSION} in build scripts")
141158
}

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)