Skip to content

Commit c1be479

Browse files
committed
[RelEng] Compute release dates from provided SimRel dates
1 parent e84ab32 commit c1be479

File tree

2 files changed

+32
-19
lines changed

2 files changed

+32
-19
lines changed

JenkinsJobs/Releng/FOLDER.groovy

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,7 @@ Useful for debugging and to very that the pipeline behaves as intended.
8282
''')
8383
stringParam('NEXT_RELEASE_VERSION', null, 'Version of the release to prepare, for example: 4.37')
8484
stringParam('PREVIOUS_RELEASE_CANDIDATE_ID', null, 'Id of the current release-candiate for the previous release, for example: S-4.36RC2-202505281830')
85-
stringParam('M1_DATE', null, 'Milestone 1 end date in the format yyyy-mm-dd, for example: 2025-07-04')
86-
stringParam('M2_DATE', null, 'Milestone 2 end date in the format yyyy-mm-dd, for example: 2025-07-25')
87-
stringParam('M3_DATE', null, 'Milestone 3 end date in the format yyyy-mm-dd, for example: 2025-08-15')
88-
stringParam('RC1_DATE', null, 'Release-Candidate 1 end date in the format yyyy-mm-dd, for example: 2025-08-22')
89-
stringParam('RC2_DATE', null, 'Release-Candidate 2 end date in the format yyyy-mm-dd, for example: 2025-08-29')
90-
stringParam('GA_DATE', null, 'Final general availability release date in the format yyyy-mm-dd, for example: 2025-09-10')
85+
stringParam('NEXT_SIMREL_NAME', null, 'The name of the Simultanious Release that is targeted by the prepared release in the format yyyy-mm, for example: 2026-03')
9186
}
9287
definition {
9388
cpsScm {

JenkinsJobs/Releng/prepareNextDevCycle.jenkinsfile

Lines changed: 31 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,20 +53,37 @@ pipeline {
5353
assignEnvVariable('PREVIOUS_RELEASE_CANDIDATE_I_BUILD', "I${previousIdMatcher.group('date')}-${previousIdMatcher.group('time')}")
5454
previousIdMatcher = null // release matcher as it's not serializable
5555

56-
//TODO: Read the dates from the calender instead of provide a structured document somewhere?
57-
// E.g. next to: https://github.com/eclipse-simrel/.github/blob/main/wiki/SimRel/2025-09.md
58-
def m1Date = parseDate(readParameter('M1_DATE'))
59-
def m2Date = parseDate(readParameter('M2_DATE'))
60-
def m3Date = parseDate(readParameter('M3_DATE'))
61-
def rc1Date = parseDate(readParameter('RC1_DATE'))
62-
def rc2Date = parseDate(readParameter('RC2_DATE'))
63-
def gaDate = parseDate(readParameter('GA_DATE'))
56+
env.NEXT_SIMREL_NAME = readParameter('NEXT_SIMREL_NAME')
57+
def simRelMatcher = env.NEXT_SIMREL_NAME =~ /(?<year>\d{4})-(?<month>\d{2})/
58+
if (!simRelMatcher.matches()) {
59+
error "Unexpected format for NEXT_SIMREL_NAME: ${NEXT_SIMREL_NAME}"
60+
}
61+
assignEnvVariable('NEXT_RELEASE_YEAR', simRelMatcher.group('year'))
62+
assignEnvVariable('NEXT_RELEASE_MONTH', simRelMatcher.group('month'))
63+
assignEnvVariable('NEXT_RELEASE_NAME', "${NEXT_SIMREL_NAME}")
64+
simRelMatcher = null // release matcher as it's not serializable
65+
66+
def simRelDatesRaw = null //sh(script: "curl --fail https://github.com/eclipse-simrel/.github/blob/main/wiki/SimRel/${NEXT_SIMREL_NAME}_dates.json", returnStdout: true)
67+
simRelDatesRaw = '''
68+
{
69+
"M1": "2025-10-10",
70+
"M2": "2025-10-31",
71+
"M3": "2025-11-21",
72+
"RC1": "2025-11-28",
73+
"RC2": "2025-12-05",
74+
"GA": "2025-12-10"
75+
}
76+
'''
77+
def simRelDates = readJSON(text: simRelDatesRaw)
78+
def m1Date = assignEnvVariable('M1_DATE', parseDate(simRelDates['M1']).minusDays(7)) // Eclipse-TLPs have an offset -7 days
79+
def m2Date = assignEnvVariable('M2_DATE', parseDate(simRelDates['M2']).minusDays(7))
80+
def m3Date = assignEnvVariable('M3_DATE', parseDate(simRelDates['M3']).minusDays(7))
81+
def rc1Date = assignEnvVariable('RC1_DATE', parseDate(simRelDates['RC1']).minusDays(7))
82+
def rc2Date = assignEnvVariable('RC2_DATE', parseDate(simRelDates['RC2']).minusDays(7))
83+
def gaDate = assignEnvVariable('GA_DATE', parseDate(simRelDates['GA'])) // Final release is at the same day
6484
if (!(m1Date < m2Date && m2Date < m3Date && m3Date < rc1Date && rc1Date < rc2Date && rc2Date < gaDate)) {
6585
error "Dates are not in strictly ascending order: ${M1_DATE}, ${M2_DATE}, ${M3_DATE}, ${RC1_DATE}, ${RC2_DATE}, ${GA_DATE}"
6686
}
67-
assignEnvVariable('NEXT_RELEASE_YEAR', gaDate.year.toString())
68-
assignEnvVariable('NEXT_RELEASE_MONTH', String.format("%02d", gaDate.monthValue))
69-
assignEnvVariable('NEXT_RELEASE_NAME', "${NEXT_RELEASE_YEAR}-${NEXT_RELEASE_MONTH}")
7087
assignEnvVariable('MAINTENANCE_BRANCH', "R${PREVIOUS_RELEASE_VERSION_MAJOR}_${PREVIOUS_RELEASE_VERSION_MINOR}_maintenance")
7188

7289
// Compute new build schedule
@@ -452,9 +469,10 @@ def readParameter(String name) {
452469
}
453470

454471
@NonCPS
455-
def assignEnvVariable(String name, String value) {
456-
env."${name}" = value
472+
private Object assignEnvVariable(String name, Object value) {
473+
env."${name}" = value?.toString()
457474
println("${name}=${value}")
475+
return value
458476
}
459477

460478
@NonCPS

0 commit comments

Comments
 (0)