Eclipse Major Release Schedule
- Update I-builds to build on the milestone schedule (Twice daily at 06:00 EST and 18:00 EST except Thursday).
- Create or update prerequisite issues for tracking ECF, EMF and Orbit
- Send reminder email for upcoming RC week to platform-releng-dev@eclipse.org, platform-dev@eclipse.org, eclipse-dev@eclipse.org and equinox-dev@eclipse.org
- Example from 4.30 RC1 but the usual schedule:
- Wednesday:
- Release Candidate is built Wednesday evening at 6PM EST.
- Thursday: Sign-Off
- Friday:
- Build delcared and released.
- Make sure to mention that the Master branch will stay closed until RC is officially released.
- Wednesday:
- Example from 4.30 RC1 but the usual schedule:
- M 1/2/3 Release
- All milestone releases are 'lightweight', meaning there is no announcement or signoff. No additional builds need to be run, just the daily I-build at 6PM EST. 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, but the promote and makevisible jobs don't need to be run.
- Wednesday:
- Verify that EMF, ECF and Orbit contributions have been included (if applicable).
- Final release candidate build runs at 6PM EST.
- Because of time zones, PST/EST might want to do Thursday's tasks EOD Wednesday after the release candidate has built.
- Thursday:
- Create a Sign-Off issue for the Release Candidate in eclipse.platform.releng.aggregator.
- Example issue #198
- If RC build is successful there should be an email sent to platform-releng-dev with the download and repository links needed for the issue.
- Deadlines are Friday at whatever time you intend to promote the RC.
- Send email asking for component go/no go to platform-releng-dev@eclipse.org, platform-dev@eclipse.org, eclipse-dev@eclipse.org and equinox-dev@eclipse.org
- Just 1 line asking for sign off on the GitHub issue created in the previous step.
- Create a Sign-Off issue for the Release Candidate in eclipse.platform.releng.aggregator.
- Friday:
- Promote the release candidate (if go).
- Run the rename and promote job in Jenkins
- DROP_ID: Release candidate build ID (make sure there is no space before or after the ID).
- CHECKPOINT: M1 etc (blank for final releases)
- SIGNOFF_BUG: Needs to be updated to sign-off issue (numeric part only)
- TRAIN_NAME: Whenever the current GA release is planned for (formatted 4 digit year - 2 digit month, i.e
2022-06
) - STREAM: 4.24.0 etc
- DL_TYPE: S is used to promote I-builds.
- TAG: Parameter should match stream version, i.e
S4_30_0_RC1
etc - After the build find and open the mail template artifact and have it ready.
- This should automatically run tag Eclipse release to tag the source code.
- Contribute to SimRel
- If you have not already set up SimRel you can do so using Auto Launch here
- Clone org.eclipse.simrel.build (Should have been done by the installer during set up, but make sure you have latest).
- Open simrel.aggr in Eclipse
- Change to the properties view
- Select Contribution:Eclipse > Mapped Repository
- Update the Location property to the "Specific repository for building against" in the mailtemplate.txt from promotion.
- 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 job in Releng jenkins to make the promoted build visible on the download page.
- Parameters should match Rename and Promote job
- Send email that the M1 build is available
- Use the mail template from the promotion build artifacts in Jenkins to get the download urls.
- Make sure to mention that the Master branch is now again open for development.
- For Milestone builds return the I-builds to the normal schedule.
- Run the rename and promote job in Jenkins
- Update ECJ compiler in the platform build (if it needs to be updated).
- To find the new compiler version:
- Go to the update site for the release candidate
- Click
plugins
- Find
org.eclipse.jdt.core.complier.batch_${ecjversion}.jar
- Edit the copyAndDeployJDTCompiler job in Jenkins
- Only JDT committers can run the job, but Releng/Platform committers can configure it
- Update the default values of the
versionfolder
,buildid
andecjversion
parameters. - Update the build triggers to schedule a build for the current date.
- Finally update the
cbi-ecj-version
in eclipse.platform.releng.aggregator/eclipse-platform-parent/pom.xml
- To find the new compiler version:
- After RC1
- Leave the I-builds running on the milestone schedule for RC2.
- Comment on EMF, ECF and Orbit issues to ask for final release builds.
- After RC2
- (optional) Disable the automatic nightly cleanup of I-builds
- Promote the release candidate (if go).
Tasks to be completed after RC2
Tasks that need to be completed before Friday
- Create an issue to track the current release tasks (see Release 4.24).
- Tag @lshanmug (New & Noteworthy), @SarikaSinha (Readme), @ktatavarthi (JDT and Platform Migration Guides), @niraj-modi (SWT Javadoc bash).
- Update the Acknowledgements.
- A script to create this issue exists here for those who have the hub cli tool installed.
- New & Noteworthy
Currently this is handled by @lshanmug who will
- Create a tracking issue in the eclipse.platform.common repo (see N&N for 4.26 as an example).
- Update the WhatsNew files and folders for the doc bundles.
- Readme
Currently handled by @SarikaSinha
- Create a tracking issue in www.eclipse.org-eclipse (see Readme file for 4.26 as an example).
- Add Readme files and update generatation scripts.
- Acknowledgements
- Create a tracking issue in www.eclipse.org-eclipse and link it to the main release issue in eclipse.platform.releng.aggregator.
- Create a new acknowledgements file for the current release and add it to www.eclipse.org-eclipse/development.
- The previous acknowledgement files are there for reference.
- Migration Guide
- Create a tracking issue in eclipse.platform.common and link it to the main release issue in eclipse.platform.releng.aggregator.
- Every release a new porting guide and folder need to be added to eclipse.platform.common/bundles/org.eclipse.jdt.doc.isv/porting, named with the version being migrated to.
- i.e
eclipse_4_27_porting_guide.html
is for migrating from 4.26 tp 4.27.
- i.e
- Update topics_Porting.xml in eclipse.platform.common/bundles/org.eclipse.jdt.doc.isv and eclipse.platform.common/bundles/org.eclipse.platform.doc.isv
- Update the name of the proting html document in eclipse.platform/platform/org.eclipse.platform/intro/migrateExtensionContent.xml
- SWT Javadoc bash
Currently handled by @niraj-modi
- Create a tracking issue in eclipse.platform.swt.
- The javadoc bash tool needs to be run on SWT sources to make it consistent.
The actual steps to release
Friday
-
- After Simrel declares RC2 (usually the Friday before release) run the rename and promote job to promote RC2 (or RC2a). If the daily cleanup for old builds job was not disabled and the original I-build is no longer available you can use the promoted RC2 build.
- Change the DL_TYPE from S to R.
- TAG will be set to R as well, for example
R4_27
- You can subscribe to cross-project-issues to get the notifications on Simrel releases.
- After Simrel declares RC2 (usually the Friday before release) run the rename and promote job to promote RC2 (or RC2a). If the daily cleanup for old builds job was not disabled and the original I-build is no longer available you can use the promoted RC2 build.
-
- Publishing to maven should happen by at least Tuesday before the release since there is up to a 24 hour delay for the maven mirrors.
- Update SDK4Mvn.aggr and properties.sh to the release build.
- SDK4Mvn.aggr determines what is being published to Maven
- Updating properties.sh determines which Eclipse version is used to run the CBI aggregator
- Run the CBI Aggregator job in jenkins with the
-release
parameter.- This will trigger the Repository Validator job which will then trigger Publish JDT to Maven, Publish PDE to Maven and Publish Platform to Maven.
- Once the three publish jobs complete successfully log into https://oss.sonatype.org/#stagingRepositories and close the Platform, JDT and PDE repositories.
- If you do not have an account on oss.sonatype.org for performing the rest of the release request one by creating an issue like https://issues.sonatype.org/browse/OSSRH-43870 to get permissions for platform, JDT and PDE projects and tag an existing release engineer to give approval.
- Contribute to SimRel
- If SimRel is not updated before the I-builds are cleaned up (specifically the build for RC2/GA) it will break.
Wednesday
The release is scheduled for 10AM EST. Typically the jobs are scheduled beforehand and run automatically.
- Run the Create Generic Composites job to recreate the generic build repos for the next release.
currentStream
: To clarify this is the next stream, not the one currently being released. If you are releasing 4.24, the 'current' stream is 4.25 so that repos are created for it.previousStream
: The stream being released, which needs to be removed.- For reference, the generic repositories created are for the latest GA release and the current (ongoing) I-builds, Y-builds and P-builds.
- Make the Release Visible
- Same process as for a milestone but with release versions.
- Complete Publication to Maven Central
- Go to https://oss.sonatype.org/#stagingRepositories and "Release" the three staging repositories.
- Send the Announcement Email
-
- To clean up specific artifacts from the old stream (milestones, I-builds and old releases) run the Cleanup Release Artifacts job.
release_to_clean
is the release that was just published.release_build
is the I-build that was promoted, this is used as a landmark to the build will clear out all previous I-builds.release_to_remove
only the last 3 major releases are kept on the download page, so if 4.25 was promoted then remove 4.22.- For the Y and P build parameters it's important to know whether or not Y and P builds were run during the release. Since they correspond to java releases on a 6 month cycle, typically they are built in odd-numbered releases.
The existing builds are kept for one release, then cleaned up before the next stream that will have Y and P builds. it's convoluted and I dont want to type it out. Remove Y builds on even releases. - If something doesn't get cleaned up properly you can use Use the list artifacts job to generate ta list of what's on the download server and either create a new job to clean it up or update and rerun the cleanup job as appropriate.
- Set Maven to Publish to I-builds
- Update SDK4Mvn.aggr and point it to the new streams I-builds.
- Set Previous Release to GA
- Everything that was updated to RC2 (see below) should now use the released build.
After RC2 create an issue to track preparation work for the next stream (see Preparation work for 4.25 (2022-09)).
- A script to create this issue exists here for those who have the hub cli tool installed. The process has been in flux recently so please update the script if necessary, but it provides a helpful template since most tasks in the previous release's issue become links.
- Maintenance Branch Creation:
- Create the branch from RC2 using the create maintenance branch job in the Eclipse Platform Releng jeknins.
- Update maintenance branch with release version
- Once the I-build repo is removed for the previous release the maintenance branch will have to use the release location, i.e. any references to
https://download.eclipse.org/eclipse/updates/4.25-I-builds/
will need to be updated tohttps://download.eclipse.org/eclipse/updates/4.26/R-4.26-202211231800/
- Functionally this means:
- Update the ECLIPSE_RUN_REPO in the cje-production buildproperties.txt files
- Update eclipserun-repo, comparator.repo and eclipse-p2-repo.url in eclipse-platform-parent/pom.xml
- This step can be prepared ahead of time but can't be merged until the release build has been promoted and the update site exists.
- Once the I-build repo is removed for the previous release the maintenance branch will have to use the release location, i.e. any references to
- Create an issue and update the build calendar for the next GA release based on the Simultaneous Release schedule.
- Each stream has its own wiki page with a more detailed schedule.
- List of people who can edit the calendar
- Alexander Kurtakov(@akurtakov)
- David Williams
- Gireesh Punathil
- Rahul Mohanan
- Samantha Dawley
- Sravan Kumar Lakkimsetti
- Create a tracking issue in eclipse.platform and link it to the main issue in eclipse.platform.releng.aggregator.
- Future spash screens are kept in a subfolder of eclipse.platform/platform/org.eclipse.platform, usually named something like 'splashscreens2022' (or the current year).
- Find the appropriate splash screen, copy it one level up and rename it splash.png, replacing the existing png.
- NOTE: Splash screens are created 4 at a time, for 4 consequtive quarterly releases, so they need to be requested once a year before the 20XX-06 release (the cycle is 2022-06 -> 2023-03, etc). Create an issue in the Eclipse Help Desk similar to Bug 575781. It is customary to do this by the previous -09 (September) release so that there's plenty of time for discussion before the -06 (June) release is opened.
- Issue for the 2023 releases is https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/issues/2336
- Edit the JobDSL.json
- Add the next release version to the
Streams
key item. - 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.
- Add the next release version to the
- Update deployPlatformParentPom.groovy and deploySdkPom.groovy to include the new maintenance branch.
- Run the Create Jobs job in Jenkins.
This should move the current I-builds to run on the maintenance branch and create new I-builds for the next release.
Performance and Unit tests should also be generated for the new release automatically.
- Run the Create New Stream Repos job to make an I-builds repo for the next release.
- Milestones in git are created by running the create-milestones job in jenkins, usually after RC1 or RC2. Only specific users can access this job for security reasons. If milestones need to be created and have not please contact @sdawley @sravanlakkimsetti or @laeubi to run it.
- Once the milestones are created (see above) the Prepare Next Release workflow will run, which will update pom and product versions for the Eclipse repositories and submit pull requests for the changes.
This is still a work in progress so if there are any issues or a repo gets missed you can fall back to the old process below:
If you cloned eclipse.platform.releng.aggregator's submodules you can fix the set version and run updateProductVersion.sh to update most of the versions.
Once that's done it's easiest to just grep for the previous release version or stream number to find the remaining instances that need to be updated, then commit the changes in a new branch for each repo. - Update version number in mac's Eclipse.app
- In eclipse-equinox/equinox update the versions in the Info.plist for both architectures under
eclipse-equinox/equinox/features/org.eclipse.equinox.executable.feature/bin/cocoa/macosx
- In eclipse-equinox/equinox update the versions in the Info.plist for both architectures under
- Update comparator repo and eclipse run repo
- Update the ECLIPSE_RUN_REPO in the cje-production buildproperties.txt files
- Update eclipserun-repo, comparator.repo and eclipse-p2-repo.url in eclipse-platform-parent/pom.xml
- Set Previous Version to RC2
- RC2 becomes the new baseline for the week before the GA release.
- Update previous-release.baseline in eclipse-platform-parent/pom.xml
- Update the last release build versions in eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/src/main/resources/equinoxp2tests.properties
- Update the previousReleaseVersion in eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/src/main/resources/label.properties
- Update the name of the copied files in eclipse.platform.releng.tychoeclipsebuilder/eclipse-junit-tests/src/main/scripts/getPreviousRelease.sh
- Update baselineCode in production/testScripts/updateTestResultsPages.sh General Cleanup
- In [eclipse.platform.common] search for and clear out all of the forceQualifierUpdate.txt files.
The context here is that the doc builds only check for changes in this repo and so these files need to be changed to trigger a full rebuild.
RC2a Release
- Sometimes there is a critical issue that requires a fix, if it's decided that one is needed then an RC2a (followed by RC2b, RC2c etc if necessary) is built from the maintenance branch and promoted using the RC2 process.
- Create an issue to set the previous release version to RC2a and add it to the Preparation issue for the next version, then update all references to RC2 to the RC2a release.