- 1 Before the Release
- 1.1 Prepare Build Environment
- 1.2 Prepare Source Code
- 1.3 Release Review & IP Log
- 2 Create Release Candidate Build
- 3 Publish Release Build
- 4 After the Release
- 5 Service Releases
- 6 Notes
Before the Release
Prepare Build Environment
- once Checkout releng on build.eclipse.org
ssh build.eclipse.org git clone /gitroot/mylyn/org.eclipse.mylyn.git
- Update releng on build.eclipse.org from Git
cd ~/org.eclipse.mylyn/ git pull
- once Make sure your have Java 5.0 or later in your path. Settings for $HOME/.bashrc on build.eclipse.org:
export JAVA_HOME=/opt/public/common/jdk-1.6.x86_64 export ECLIPSE_HOME=~/.m2/repository/org/eclipse/tycho/tycho-p2-runtime/0.12.0/eclipse
- once Run Maven on build.eclipse.org to download runtime
cd org.eclipse.mylyn mvn package
- once Create symlinks for convenience
ln -s /home/data/httpd/archive.eclipse.org/ ~/archive ln -s org.eclipse.mylyn/org.eclipse.mylyn.releng ~/releng
Prepare Source Code
- Run Source > Find Broken Externalized Strings over all bundles
- Run Source > Externalize Strings over all bundles
Update User Guide from the Wiki
- Run org.eclipse.mylyn.help.ui/build-helper.xml as an Ant Build (ensure WikiText is checked out into your workspace)
- Review the user guide and commit changes
Update Copyright Notices
- Update the year in the about.ini to the current year
- Update the year in all feature.xml files to the current year for changed features
- Update the year in copyright notices of changed source files: Install platform releng tools (available from the update site http://download.eclipse.org/eclipse/updates/4.3), Project context menu > Fix Copyrights
Release Review & IP Log
See Release_Cycle#Release_Review for details.
Submit IP Log for Review at least 2 weeks before release
- Check the downloads area. The tool is deprecated and a replacement is coming.
- Check that all Orbit bundles are tracked in approved CQs
- The following missing CQ's are expected due to limitations of the project downloads scanner:
axis-ant.jar (No CQ found) axis.jar (No CQ found) epub-ant.jar (No CQ found) htmltext.jar (No CQ found) jaxrpc.jar (No CQ found) junit.jar (No CQ found)
- Submit IP log by going to https://projects.eclipse.org/projects/mylyn/, logging in, expanding the "Committer Tools" block and clicking "Generate IP Log."
Seek PMC Approval for Release at least 2 weeks before release
- email link to review documentation to firstname.lastname@example.org
Schedule Release Review at least 1 week before release
- Once PMC and IP log approval are secured, send links to review document and mailing list discussion showing PMC approval to email@example.com
Create Release Candidate Build
See Mylyn/Build_Infrastructure#Updating_Eclipse_Platform_Dependency_Versions to update versions of Eclipse Platform dependencies.
- Orbit may provide multiple copies of the same version of a library with different qualifiers. For each dependency consumed from Orbit, make sure we are consuming the latest qualifier of whatever version we are using, by updating the current and staging targets to the latest Orbit version from http://download.eclipse.org/tools/orbit/downloads/ and updating any qualifiers that have changed (do not update version numbers):
cd ~/releng/bin ./extractVersionsFromUpdateSite.sh ../../org.eclipse.mylyn-target/mylyn-e4.4.target ~/downloads/tools/orbit/downloads/drops/R20150519210750/repository/
Copy the desired suggestions to the target file.
Create a Branch (Major Release Only)
- Branch integration repository. Note: replace clone command with "git pull" if repository is already cloned.
git clone ssh://git.eclipse.org/gitroot/mylyn/org.eclipse.mylyn.all src-3_6_x cd src-3_6_x git checkout -b e_3_7_m_3_6_x git submodule init git submodule update
- Branch each sub-project. Remember to increment the Eclipse version each year.
git submodule foreach git checkout master git submodule foreach git pull git submodule foreach git checkout -b e_3_7_m_3_6_x master
- Copy .gitmodules from previous branch and update the branches to the current branch
- Push changed .gitmodules file to new e_3_7_m_3_6_x branch
- Push submodule branches
git submodule foreach git push origin e_3_7_m_3_6_x:e_3_7_m_3_6_x
- configure mylyn-3.6.x-release job on Hudson
- set BRANCH parameter e_3_7_m_3_6_x
- edit the build schedule so it won't build automatically after this point
- configure mylyn-3.6.x job at http://ci.mylyn.org/ to build from e_3_7_m_3_6_x branch
- If building from a branch, make sure that all needed changes are on the branch and that the o.e.m.all repository is up to date. It doesn't always update automatically.
- Release builds (Hudson)
- Check publish
- Once the build is complete, check the test results from the downstream jobs
- ensure that http://ci.mylyn.org/job/update-simrel-contribution/ build runs and resulting review(s) are merged to update the B3 aggregation file before the SimRel +3 build cutoff (Wednesdays around 5pm EST)
Verify Update Site Contents
- Check that only approved features are on the update site
Update Discovery Jar
- Update siteUrls and statsUrls in org.eclipse.mylyn/org.eclipse.mylyn.discovery-directory/plugin.xml to have the correct version
- Check that the listings (supported versions) are up to date.
Run org.eclipse.mylyn.discovery-directory/build-helper.xml to produce a new jar. Then copy org.eclipse.mylyn.discovery.jar to ~/downloads/mylyn/discovery/, renaming it with the Mylyn version.
scp org.eclipse.mylyn.discovery.jar firstname.lastname@example.org:~/downloads/mylyn/discovery/org.eclipse.mylyn.discovery-3.12.jar
Make a second copy of the jar named with the next Mylyn version so that updating the framework version after the release (below) will not cause tests to fail.
scp org.eclipse.mylyn.discovery.jar email@example.com:~/downloads/mylyn/discovery/org.eclipse.mylyn.discovery-3.13.jar
Commit the changes.
- Do a test install from http://download.eclipse.org/mylyn/snapshots/weekly or http://download.eclipse.org/mylyn/drops/ NOTE: These are only links to the zip files, the update site URL has the form http://download.eclipse.org/mylyn/drops/3.24.2/v20180905-2014/
- Test that any changes to discovery show up (it may take a while for the new jar to propagate to mirrors)
Publish Release Build
Prepare Final Release Build
If you want to include any changes made since the repository was branched:
- cherry-pick the changes or fast-forward the branches
- update the submodule commit references on the o.e.m.all repository
- do another build
- verify that the build installs.
- Tag the release as R_x_y_z (and R_x_y_z_e_3_3 if plug-ins are branched)
git submodule foreach git tag R_3_6_3 git tag R_3_6_3
- Tag sub-projects with their respective versions as vx.y.z (e.g. v0.8.1):
org.eclipse.mylyn.builds org.eclipse.mylyn.reviews org.eclipse.mylyn.versions
- Push tags
git submodule foreach git push --tags git push --tags
Prepare Download Area
- Remove Old old RC builds (i.e. all builds other than the latest)
cd ~/downloads/mylyn/drops/3.17.0/ rm -rf `ls | head -n -1`
- Update snapshot sites by running https://hudson.eclipse.org/mylyn/view/Releases/job/update-repositories/
- Copy Release to archive.eclipse.org
cp -a ~/downloads/mylyn/drops/3.6.0 /home/data/httpd/archive.eclipse.org/mylyn/drops
- Run script to add mirror URLs
cd ~/downloads/mylyn/drops/3.6.0/ ~/releng/bin/update-metadata.sh
Create API Baseline
- major releases Create an API baseline zip
cd ~/downloads/mylyn/drops/3.6.0 ~/releng/bin/create-api-profile.sh 3.6.0 v20110608-1400
Update Release Repository Content
Note: This is the step that should wait until the official release day. That way the artifacts can be published early so they have time to mirror, but they won't be visible until this step is done.
- major releases Create composite for the release in the git repository, on the master branch:
cd org.eclipse.mylyn/org.eclipse.mylyn-downloads/releases/ cp -r 3.5 3.6 emacs 3.6/composite.index
- major releases and SRs for the latest major release Update release composite sites in the git repository, on the master branch:
cd org.eclipse.mylyn/org.eclipse.mylyn-downloads/releases/ rm -rf latest; cp -r 3.6 latest
- Commit the changes and run https://hudson.eclipse.org/mylyn/view/Releases/job/update-repositories/ to update the composite sites. You must run the job even if the composite.index did not change.
- Update the version number on download page
- Create a new section on download archive page
- major releases Add a link to the new API baseline on the download archive page and update your development environment with the new baseline
- Create a New & Noteworthy for the release
- create new/new-3.7.html
- add section to new/all.php
- update version in new/index.php
- Update the Releases section at http://eclipse.org/mylyn/
- Update http://eclipse.org/mylyn/updates.xml
- Major Release Create a discovery/directory-XX.xml for the next Mylyn version in the website Git.
- Make release available in Eclipse Babel for translation (major releases only)
Update Marketplace Listings
After the Release
Update the targets if this was not already done above.
- service release only Add SR branch to mylyn-snapshot-publish "Branches to build"
- Update local repositories, replacing "master" with the branch, e.g. "e_4_8_m_3_24_x":
cd org.eclipse.mylyn.all git checkout master git pull git submodule foreach git reset --hard git submodule foreach git checkout master git submodule foreach git pull
- major release Update CoreUtil.FRAMEWORK_VERSION
- major release Edit discovery label and URL in org.eclipse.mylyn-feature/feature.xml
- Edit versions in org.eclipse.mylyn/org.eclipse.mylyn.releng/bin/update-versions.sh. For first Service Release on the branch only, also uncomment updateSnapshotSitesForSR <VERSION>.
- Update the bug number and version number variables in the script
- Push reviews to Gerrit (i.e. using EGit with Gerrit config or using "git push origin HEAD:refs/for/<branch>") in dependency order. After each set of reviews is merged, wait for the corresponding nightly builds to publish new snapshots before pushing the next set of reviews (for SRs, need to run the release build (e.g. 3.14.x) to publish snapshots). Push sets of reviews in this order:
- org.eclipse.mylyn, org.eclipse.mylyn.all (wait for or trigger mylyn-snapshot-publish before continuing)
- tasks, versions
- context, reviews
- major release Update the default value of the BRANCH parameter of http://ci.mylyn.org/view/Snapshots/job/update-simrel-contribution/ with the branches that should get the next Mylyn version, or disable the job if no SimRel will include this version. This will normally be "master" (contribute to the next release of Eclipse), but can have a space-delimited list of other eclipse versions to contribute to. E.g. if the next Mylyn release will happen before the next Eclipse Neon update release, the parameter should be set to "master Neon_maintenance".
Create Download Area
- Create download directory (omit last argument if this is not a major release)
~/releng/bin/create-download-directory.sh 3.6.0 3.7.0 true
- June release Create composite site for next Eclipse release in the git repository, on the master branch
cp -r org.eclipse.mylyn/org.eclipse.mylyn-downloads/releases/luna org.eclipse.mylyn/org.eclipse.mylyn-downloads/releases/mars
- major release Update composite site indices in the git repository, on the master branch
- Commit the changes and run https://hudson.eclipse.org/mylyn/view/Releases/job/update-repositories/ to publish them.
Create Build Jobs
- Create mylyn-3.7.x-release job on the HIPP by cloning the previous release job
- Configure job to build from master branch, trigger downstream jobs on master branch, and run weekly
- Configure job to use target for latest Eclipse version by specifying that profile in the goals (e.g. -Pmars)
- start a build so the composite sites will be populated
- Create a mylyn-3.7.x job at http://ci.mylyn.org/ and configure it to build from the master branch
update default target of http://ci.mylyn.org/job/mylyn-all-snapshot/ to next Eclipse release
- update targets of https://hudson.eclipse.org/mylyn/job/mylyn-integration/ and http://ci.mylyn.org/job/mylyn-3.20.x to have the last Eclipse major version, the next Eclipse major version, staging, and maintenance (when the maintenance repository exists), e.g. mars neon maintenance staging
Update Snapshot Sites
- wait for the new release build to complete
- Run https://hudson.eclipse.org/mylyn/view/Releases/job/update-repositories/
Update Oomph Setup
- switch to the new API baseline
- add new build jobs
Add Bugzilla Versions and Milestones
- Add Bugzilla Milestones for the next release
- major release Add Bugzilla Version for the current release
- major release move all bugs from "next" milestones to the new milestones:
Update Project Plan
- major release Update release plans in https://projects.eclipse.org/projects/mylyn/documentation
- Create release bug for the next release
- Add release to Mylyn calendar
- Send announcement to the mylyn-dev list with the date and a link to the release bug so people can follow along
The steps for service releases are as follows. See above for details on each step. If the major release being SRed has not been completed, ensure that the steps "Create a Branch" and "Prepare Download Area" are complete before beginning the SR process.
- Prepare Build Environment
- Create Download Area
- Update Versions
- Cherrypick changes
- Test Install
- Update SimRel: if SR will be contributed to SimRel, manually run http://ci.mylyn.org/view/Snapshots/job/update-simrel-contribution/ with the drop and branches that should get the SR.
- Tag Sources
- Prepare Download Area
- Update Release Repository Content
- Update Website
- Announce Release
- https://hudson.eclipse.org/mylyn/view/Releases/job/update-repositories/: need to run this every time after deleting drops to make sure there are no stale references
- Most of the examples assume you are releasing Mylyn 3.6 and then preparing for the 3.7 release
- In this document, major release generally means anything other than a service release
- A version of this document including instructions specific to Mylyn Incubator is available at https://wiki.eclipse.org/index.php?title=Mylyn/Release_Howto&oldid=404098 (search the page for "incubator")