Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "Mylyn/Release Howto"

(The Release)
(Update Website)
(52 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[category:Mylyn]]
 
[[category:Mylyn]]
  
==== Before the Release ====
+
= Before the Release =
* Run AllTests
+
* Update the user guide from the wiki
+
** Run org.eclipse.mylyn.help.ui/build-helper.xml as an Ant Build (ensure org.eclipse.mylyn.wikitext* is checked out into your workspace)
+
** Review the user guide and commit changes to CVS
+
* Backport changes to the 3.3 branch
+
** Update 3.3 workspace to the latest
+
** Select branched plug-ins
+
** Team > Merge
+
*** end tag: HEAD
+
*** start tag: Merged_e_3_3_m_3_x
+
*** select Preview the merge in the synchronize perspective
+
** Merge changes and resolve conflicts
+
** Tag branched plug-ins in '''3.4''' workspace (i.e. cvs head) with Merged_e_3_3_m_3_x
+
*** select Move tag if already exists
+
  
==== The Release ====
+
== Prepare Build Environment ==
''Major releases only''
+
* ''once'' Checkout releng on build.eclipse.org
* Tag the release as R_x_y_z and R_x_y_y_e_3_3
+
ssh build.eclipse.org
----
+
git clone /gitroot/mylyn/org.eclipse.mylyn.git
* Prepare the build environment
+
* Update releng on build.eclipse.org from Git
  ssh [user]@build.eclipse.org
+
  cd ~/org.eclipse.mylyn/
  cvs -d :pserver:anonymous@dev.eclipse.org:/cvsroot/tools co org.eclipse.mylyn/org.eclipse.mylyn.releng
+
  git pull
  cd org.eclipse.mylyn/org.eclipse.mylyn.releng
+
* ''once'' Make sure your have Java 5.0 or later in your path. Settings for $HOME/.bashrc on build.eclipse.org:
# adjust settings in local.properties as necessary
+
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
  
* Build the release:
+
== Create a Branch ==
  ant weekly # weekly builds
+
* ''major release'' Branch integration repository
  ant galileo # signed builds that are published to the weekly and Galileo update site
+
git clone ssh://git.eclipse.org/gitroot/mylyn/org.eclipse.mylyn.all src-3_6_x
* If signing times out:
+
cd src-3_6_x
  ant sign
+
git checkout -b 3_7_m_3_6_x
  ant -Dtodir=weekly promote
+
git submodule init
  ant -Dtodir=galileo promote-main
+
git submodule update
* Update mylyn.build file for Galileo builds
+
* ''major release'' Branch each sub-project
----
+
git submodule foreach git checkout -b 3_7_m_3_6_x master
''Major releases only''
+
* ''major release'' Request mylyn-3.6.x-release job on Hudson cloning an existing release job
* Move the release from the weekly site to the main update site:
+
 
  ssh [username]@build.eclipse.org
+
== Prepare Source Code ==
  cd /shared/tools/mylyn/weekly
+
 
  ./promote.sh [major] [build]
+
=== Internationalize Messages ===
* Update the version number on the download page
+
* Run Source > Find Broken Externalized Strings over all bundles
* Create a new section in the download archive
+
* Run Source > Externalize Strings over all bundles
 +
 
 +
=== Update User Guide from the Wiki ===
 +
* Run <tt>org.eclipse.mylyn.help.ui/build-helper.xml</tt> 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, Project context menu > Fix Copyrights
 +
 
 +
=== Backport changes to the Platform Specific Branches ===
 +
* Merge changes from master in each branched module
 +
  git merge master
 +
 
 +
== Update Integration Repository ==
 +
* Update integration repository to point to latest sub-project revisions
 +
  cd src-3_6_x
 +
  ./update.sh
 +
 
 +
== Run Tests ==
 +
* Trigger a [https://hudson.eclipse.org/hudson/job/mylyn-nightly/ nightly build] or run the AllTests suite
 +
 
 +
= The Release =
 +
 
 +
== Update Target ==
 +
* Update target files in <tt>org.eclipse.mylyn/org.eclipse.mylyn-target</tt> to point to release sites of dependencies to ensure builds are reproducible in the future
 +
 
 +
== Tag Sources ==
 +
* Tag the release as R_x_y_z (and R_x_y_z_e_3_3 if plug-ins are branched)
 +
./foreach.sh 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.docs
 +
org.eclipse.mylyn.reviews
 +
org.eclipse.mylyn.versions
 +
* Push tags
 +
  git submodule foreach git push --tags
 +
 
 +
== Build ==
 +
* Release build (Hudson): [https://hudson.eclipse.org/hudson/job/mylyn-release/ https://hudson.eclipse.org/hudson/job/mylyn-release/]
 +
** Select release as the type
 +
** Check publish
 +
** Enter timestamp for qualifier
 +
* Release build (manually):
 +
   
 +
mvn -Prelease -DforceContextQualifier=v20110304-0100 -Ppublish -Phudson.eclipse.org -Pindigo -Dexplicit-target -Dmaven.test.skip=true -Dtycho-version=0.12.0 -Dsign-dir=tools/mylyn/hudson/release clean install
 +
 
 +
* Snapshot build (manually):
 +
 
 +
mvn -Psnapshot -Ppublish -Phudson.eclipse.org -Pindigo -Dexplicit-target -Dmaven.test.skip=true -Dtycho-version=0.12.0 -Dsign-dir=tools/mylyn/hudson/snapshot clean install
 +
 
 +
== Verify Update Site Contents ==
 +
* Check that only approved features are on the update site
 +
* Check that all Orbit bundles are tracked in [http://eclipse.org/projects/ip_log.php?projectid=mylyn,mylyn.builds,mylyn.commons,mylyn.context,mylyn.docs,mylyn.reviews,mylyn.tasks,mylyn.versions approved CQs]
 +
 
 +
== Update Discovery Jar ==
 +
 
 +
Run <tt>org.eclipse.mylyn/org.eclipse.mylyn.discovery-directory/build-helper.xml</tt> to produce a new jar (check that the listings are up to date first). Then copy org.eclipse.mylyn.discovery.jar to <tt>~/downloads/mylyn/discovery/</tt>, renaming it with the Mylyn version.
 +
 
 +
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.
 +
 
 +
== Test Install ==
 +
* Do a test install from http://download.eclipse.org/mylyn/snapshots/weekly
 +
* Test that any changes to discovery show up
 +
 
 +
== Prepare Download Area ==
 +
* Log into Eclipse.org
 +
ssh build.eclipse.org
 +
* Remove Old Integration Builds
 +
rm -rf ~/downloads/mylyn/drops/3.6.0/I*
 +
* Also remove all RC builds (builds starting with a 'v') other than the latest
 +
* 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
 +
* Check that the content.jar contains the following property:
 +
<property name="p2.mirrorsURL" value="http://www.eclipse.org/downloads/download.php?file=/mylyn/drops/.../v.../&amp;protocol=http&amp;format=xml"/>
 +
 
 +
== Update Release Repository Content ==
 +
* Log into Eclipse.org
 +
  ssh build.eclipse.org
 +
* Update filters in <tt>~/downloads/mylyn/releases/*/composite.index</tt>
 +
** Ensure that ~/downloads/mylyn/releases/3.6 exists, where 3.6 is the version to be released, and that it contains a composite.index with appropriate content
 +
* Update release composite sites
 +
  cd ~/downloads/mylyn/releases/
 +
  ~/releng/bin/create-composite.sh -r
 +
cp -r 3.6 latest
 +
 
 +
== Create API Baseline ==
 +
* ''major releases'' Create an API baseline zip
 +
  ~/releng/bin/create-api-profile.sh 3.6.0 v20110608-1400
 +
 
 +
== Update Website ==
 +
* Update the version number on download page
 +
* Update the snapshot section on the 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 the developer page
 
* Create a new section in the New &amp; Noteworthy
 
* Create a new section in the New &amp; Noteworthy
 +
* Update the News section at http://eclipse.org/mylyn/
 +
 +
== Update Babel ==
 +
* Make release available in [http://babel.eclipse.org/babel/map_files.php Eclipse Babel] for translation (major releases only)
 +
 +
== Announce Release ==
 +
* Send announcement to [http://dev.eclipse.org/mhonarc/lists/mylyn-announce/maillist.html mylyn-announce]
 +
* Post announcement to [http://www.eclipse.org/forums/index.php?t=thread&frm_id=83 news group]
 +
 +
== Update http://eclipse.org/mylyn/updates.xml ==
 +
* Edit updates.xml in website Git repository
 +
 +
== Update Eclipse Info Center ==
 +
* Inform webmaster of new help plug-ins for the [http://help.eclipse.org Eclipse info center]
 +
 +
== Update Marketplace Listings ==
 +
* ''major releases'' [http://marketplace.eclipse.org/content/mylyn Mylyn]
 +
* ''major releases'' [http://marketplace.eclipse.org/content/mylyn-trac-connector Trac Connector]
 +
 +
= After the Release =
 +
 +
== Create Discovery Directory ==
 +
 +
Create a discovery/directory-XX.xml for the new Mylyn version in the website Git, commenting out any 3rd party jars that haven't been created yet.
 +
 +
== Update Versions ==
 +
* Edit versions in <tt>org.eclipse.mylyn/org.eclipse.mylyn.releng/bin/update-versions.sh</tt>
 +
org.eclipse.mylyn/org.eclipse.mylyn.releng/bin/update-versions.sh
 +
* Push reviews in dependency order. After each set of reviews is merged, wait for the corresponding [https://hudson.eclipse.org/hudson/view/Mylyn/ nightly builds] to publish new snapshots before pushing the next set of reviews. Push sets of reviews in this order:
 +
# docs, commons, org.eclipse.mylyn
 +
# tasks, versions
 +
# context, reviews, builds
 +
# incubator
 +
* Update versions in <tt>org.eclipse.mylyn.commons.ui/.settings/.api_filters</tt>
 +
* Update CoreUtil.FRAMEWORK_VERSION
 +
 +
== Update Repository URL ==
 +
* ''major release'' Edit URL in <tt>org.eclipse.mylyn-feature/feature.xml</tt>
 +
 +
== Create Download Area ==
 +
* Create download directory
 +
mkdir ~/downloads/mylyn/drops/3.7.0/
 +
setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/drops/3.7.0/
 +
setfacl -R -x user:hudsonBuild ~/downloads/mylyn/drops/3.6.0/
 +
* ''major release'' Create snapshot site
 +
cp -a ~/downloads/mylyn/snapshots/3.6 ~/downloads/mylyn/snapshots/3.7
 +
* ''major release'' Update composite site indices
 +
emacs ~/downloads/mylyn/snapshots/*/composite.index
 +
* Update snapshot sites
 +
cd ~/downloads/mylyn/snapshots/
 +
~/releng/bin/create-composite.sh -r
 +
* ''major release'' Create Incubator download directory
 +
mkdir ~/downloads/mylyn/incubator/drops/3.7.0
 +
setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/incubator/drops/3.7.0/
 +
setfacl -R -x user:hudsonBuild ~/downloads/mylyn/incubator/drops/3.6.0/
 +
* ''major release'' Create Incubator site
 +
cp -a ~/downloads/mylyn/incubator/3.6 ~/downloads/mylyn/incubator/3.7
 +
emacs ~/downloads/mylyn/incubator/3.7/composite.index
 +
* Update composite site
 +
cd ~/downloads/mylyn/incubator
 +
~/releng/bin/create-composite.sh -r
 +
 +
== Add Bugzilla Versions and Milestones ==
 +
* [https://dev.eclipse.org/committers/bugs/bugz_manager.php Add Bugzilla Milestones] for the next release
 +
* ''major release'' Add Bugzilla Version for the current release
 +
 +
== Update Project Plan ==
 +
* ''major release'' Update release plans in https://projects.eclipse.org/projects/mylyn/documentation
  
==== When the build has propagated to mirrors ====
+
= Notes =
''Major releases only''
+
* Add the mirror attribute to all site.xml files and regenerate meta-data with correct update site identifiers:
+
ssh [username]@build.eclipse.org
+
cd /shared/tools/mylyn/weekly
+
./add-mirrors.sh
+
./generate-p2-metadata.sh
+
* Check that the site.xml files have the following URL set:
+
<source lang="xml">
+
  mirrorsURL="http://www.eclipse.org/downloads/download.php?file=/tools/mylyn/update/[location]/site.xml&amp;protocol=http&amp;format=xml"
+
</source>
+
  
==== After the release ====
+
* create-composite.sh: need to run this every time after deleting drops to make sure there are no stale references
''Major releases only''
+
* For head and e3.3 branch: Replace version numbers in all MANIFEST.MF and feature.xml files, e.g. 2.3.0.qualifier -> 2.3.1.qualifier and 2.3.0.mylynQualifier -> 2.3.1.mylynQualifier
+
* Make sure changes are applied to the 3.3 branch as well as the 3.4 branch
+

Revision as of 14:37, 8 April 2014


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

Create a Branch

  • major release Branch integration repository
git clone ssh://git.eclipse.org/gitroot/mylyn/org.eclipse.mylyn.all src-3_6_x
cd src-3_6_x
git checkout -b 3_7_m_3_6_x
git submodule init
git submodule update
  • major release Branch each sub-project
git submodule foreach git checkout -b 3_7_m_3_6_x master
  • major release Request mylyn-3.6.x-release job on Hudson cloning an existing release job

Prepare Source Code

Internationalize Messages

  • 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, Project context menu > Fix Copyrights

Backport changes to the Platform Specific Branches

  • Merge changes from master in each branched module
git merge master

Update Integration Repository

  • Update integration repository to point to latest sub-project revisions
cd src-3_6_x
./update.sh

Run Tests

The Release

Update Target

  • Update target files in org.eclipse.mylyn/org.eclipse.mylyn-target to point to release sites of dependencies to ensure builds are reproducible in the future

Tag Sources

  • Tag the release as R_x_y_z (and R_x_y_z_e_3_3 if plug-ins are branched)
./foreach.sh 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.docs
org.eclipse.mylyn.reviews
org.eclipse.mylyn.versions
  • Push tags
git submodule foreach git push --tags

Build

mvn -Prelease -DforceContextQualifier=v20110304-0100 -Ppublish -Phudson.eclipse.org -Pindigo -Dexplicit-target -Dmaven.test.skip=true -Dtycho-version=0.12.0 -Dsign-dir=tools/mylyn/hudson/release clean install
  • Snapshot build (manually):
mvn -Psnapshot -Ppublish -Phudson.eclipse.org -Pindigo -Dexplicit-target -Dmaven.test.skip=true -Dtycho-version=0.12.0 -Dsign-dir=tools/mylyn/hudson/snapshot clean install

Verify Update Site Contents

  • Check that only approved features are on the update site
  • Check that all Orbit bundles are tracked in approved CQs

Update Discovery Jar

Run org.eclipse.mylyn/org.eclipse.mylyn.discovery-directory/build-helper.xml to produce a new jar (check that the listings are up to date first). Then copy org.eclipse.mylyn.discovery.jar to ~/downloads/mylyn/discovery/, renaming it with the Mylyn version.

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.

Test Install

Prepare Download Area

  • Log into Eclipse.org
ssh build.eclipse.org
  • Remove Old Integration Builds
rm -rf ~/downloads/mylyn/drops/3.6.0/I*
  • Also remove all RC builds (builds starting with a 'v') other than the latest
  • 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
  • Check that the content.jar contains the following property:
<property name="p2.mirrorsURL" value="http://www.eclipse.org/downloads/download.php?file=/mylyn/drops/.../v.../&protocol=http&format=xml"/>

Update Release Repository Content

  • Log into Eclipse.org
ssh build.eclipse.org
  • Update filters in ~/downloads/mylyn/releases/*/composite.index
    • Ensure that ~/downloads/mylyn/releases/3.6 exists, where 3.6 is the version to be released, and that it contains a composite.index with appropriate content
  • Update release composite sites
cd ~/downloads/mylyn/releases/
~/releng/bin/create-composite.sh -r
cp -r 3.6 latest

Create API Baseline

  • major releases Create an API baseline zip
 ~/releng/bin/create-api-profile.sh 3.6.0 v20110608-1400

Update Website

  • Update the version number on download page
  • Update the snapshot section on the 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 the developer page
  • Create a new section in the New & Noteworthy
  • Update the News section at http://eclipse.org/mylyn/

Update Babel

  • Make release available in Eclipse Babel for translation (major releases only)

Announce Release

Update http://eclipse.org/mylyn/updates.xml

  • Edit updates.xml in website Git repository

Update Eclipse Info Center

Update Marketplace Listings

After the Release

Create Discovery Directory

Create a discovery/directory-XX.xml for the new Mylyn version in the website Git, commenting out any 3rd party jars that haven't been created yet.

Update Versions

  • Edit versions in org.eclipse.mylyn/org.eclipse.mylyn.releng/bin/update-versions.sh
org.eclipse.mylyn/org.eclipse.mylyn.releng/bin/update-versions.sh
  • Push reviews 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. Push sets of reviews in this order:
  1. docs, commons, org.eclipse.mylyn
  2. tasks, versions
  3. context, reviews, builds
  4. incubator
  • Update versions in org.eclipse.mylyn.commons.ui/.settings/.api_filters
  • Update CoreUtil.FRAMEWORK_VERSION

Update Repository URL

  • major release Edit URL in org.eclipse.mylyn-feature/feature.xml

Create Download Area

  • Create download directory
mkdir ~/downloads/mylyn/drops/3.7.0/
setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/drops/3.7.0/
setfacl -R -x user:hudsonBuild ~/downloads/mylyn/drops/3.6.0/
  • major release Create snapshot site
cp -a ~/downloads/mylyn/snapshots/3.6 ~/downloads/mylyn/snapshots/3.7
  • major release Update composite site indices
emacs ~/downloads/mylyn/snapshots/*/composite.index
  • Update snapshot sites
cd ~/downloads/mylyn/snapshots/
~/releng/bin/create-composite.sh -r
  • major release Create Incubator download directory
mkdir ~/downloads/mylyn/incubator/drops/3.7.0
setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/incubator/drops/3.7.0/
setfacl -R -x user:hudsonBuild ~/downloads/mylyn/incubator/drops/3.6.0/
  • major release Create Incubator site
cp -a ~/downloads/mylyn/incubator/3.6 ~/downloads/mylyn/incubator/3.7
emacs ~/downloads/mylyn/incubator/3.7/composite.index
  • Update composite site
cd ~/downloads/mylyn/incubator
~/releng/bin/create-composite.sh -r

Add Bugzilla Versions and Milestones

Update Project Plan

Notes

  • create-composite.sh: need to run this every time after deleting drops to make sure there are no stale references

Back to the top