Difference between revisions of "Mylyn/Release Howto"

From Eclipsepedia

Jump to: navigation, search
(After the release)
(Update Versions)
(37 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 sandbox/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
* Build the release:
+
* ''once'' Make sure your have Java 5.0 or later in your path. Settings for $HOME/.bashrc on build.eclipse.org:
  ssh releng@mylyn.eclipse.org
+
export JAVA_HOME=/opt/public/common/jdk-1.6.x86_64
  cd weekly
+
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 ==
 +
* 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 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 ==
 +
* 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):
 
   
 
   
  # for major releases set QUALIFIER to v2008...:
+
  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
  emacs local.sh
+
 
./build.sh -release
+
* Snapshot build (manually):
   
+
 
  # for milestone releases use auto generated version:
+
  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
  ./build.sh
+
 
 +
== 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]
 +
 
 +
== Test Install ==
 +
* Do a test install from http://download.eclipse.org/mylyn/snapshots/weekly
 +
 
 +
== Prepare Download Area ==
 +
* Log into Eclipse.org
 +
ssh build.eclipse.org
 +
* Remove Old Integration Builds
 +
rm -rf ~/downloads/mylyn/drops/3.6.0/I*
 +
* Copy Release to archive.eclipes.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 dev.eclipse.org
 +
* Update filters in ~/downloads/mylyn/releases/*/composite.index
 +
* Update release composite sites
 +
  cd ~/downloads/mylyn/releases/
 +
  ~/releng/bin/create-composite.sh -r
 +
 
 +
== 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
 +
* Create a new section on download archive page
 +
* Create a new section in the New &amp; Noteworthy
 +
* ''major releases'' Add a link to the new API baseline on the download archive page and update the developer page
 +
* ''major releases'' Archive [http://www.eclipse.org/projects/project-plan.php?projectid=mylyn project plan] in mylyn/docs
 +
 
 +
== 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 /mylyn/notification.xml in website CVS
 +
 
 +
== 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 =
 +
 
 +
== 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
 +
* Set versions of org.eclipse.mylyn.commons/org.eclipse.mylyn to the next release version
 +
* Update version in CoreUtil.FRAMEWORK_VERSION
 +
* Update URL in ConnectorDiscoveryWizardMainPage.DEFAULT_DIRECTORY_URL
 +
 
 +
== Update Repository URL ==
 +
* ''major release'' Edit URL in org.eclipse.mylyn-feature/feature.xml
  
* Upload the release:
+
== Create Download Area ==
  ./upload.sh [username]
+
* Create download directory
* Prompts twice for password, if the second login times out:
+
  mkdir ~/downloads/mylyn/drops/3.7.0/
./upload.sh [username] -extract
+
setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/drops/3.7.0/
----
+
  setfacl -R -x user:hudsonBuild ~/downloads/mylyn/drops/3.6.0/
* Sign the release (e.g. major=3.0.2, build=v20080815-2300)
+
* ''major release'' Create snapshot site
  ssh [username]@build.eclipse.org
+
  cp -a ~/downloads/mylyn/snapshots/3.6 ~/downloads/mylyn/snapshots/3.7
  cd /shared/tools/mylyn/weekly
+
* ''major release'' Update composite site indices
./sign-update-site.sh [major] [build]
+
  emacs ~/downloads/mylyn/snapshots/*/composite.index
* If signing times out rerun the ./sign-update-site.sh script it will resume the signing
+
* Update snapshot sites
* The version in the update archive is now signed
+
  cd ~/downloads/mylyn/snapshots/
----
+
  ~/releng/bin/create-composite.sh -r
''Major releases only''
+
* ''major release'' Create Incubator download directory
* Move the release from the weekly site to the main update site:
+
  mkdir ~/downloads/mylyn/incubator/drops/3.7.0
  ssh [username]@build.eclipse.org
+
  setfacl -m user:hudsonBuild:rwx ~/downloads/mylyn/incubator/drops/3.7.0/
  cd /shared/tools/mylyn/weekly
+
setfacl -R -x user:hudsonBuild ~/downloads/mylyn/incubator/drops/3.6.0/
  ./promote.sh [major] [build]
+
* ''major release'' Create Incubator site
* Update the version number on the download page
+
  cp -a ~/downloads/mylyn/incubator/3.6 cp -a ~/downloads/mylyn/incubator/3.7
* Create a new section in the download archive
+
emacs ~/downloads/mylyn/incubator/3.7/composite.index
----
+
* Update composite site
''Ganymede releases only''
+
cd ~/downloads/mylyn/incubator
* Copy build to ganymede update site:
+
~/releng/bin/create-composite.sh -r
  ssh [username]@build.eclipse.org
+
  cd ~/downloads/tools/mylyn/update-archive/[major]/[minor]
+
  cp -a e3.4/* extras/ incubator/ *-e3.4.zip ~/downloads/tools/mylyn/update/ganymede
+
* Update mylyn.sc file
+
  
==== When the build has propagated to mirrors ====
+
== Add Bugzilla Versions and Milestones ==
''Major releases only''
+
* Add Bugzilla Milestones for the next release
* Add the mirror attribute to all site.xml files and regenerate meta-data with correct update site identifiers:
+
* ''major release'' Add Bugzilla Version for the current release
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 ====
+
== Update Project Plan ==
''Major releases only''
+
* ''major release'' Update versions and queries in all plan.xml documents
* 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
+
* ''major release'' Update release plans in [https://dev.eclipse.org/portal/myfoundation/portal/portal.php portal]
* Make sure changes are applied to the 3.3 branch as well as the 3.4 branch
+

Revision as of 10:14, 5 June 2012


Contents

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
  • 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

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*
  • Copy Release to archive.eclipes.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 dev.eclipse.org
  • Update filters in ~/downloads/mylyn/releases/*/composite.index
  • Update release composite sites
cd ~/downloads/mylyn/releases/
~/releng/bin/create-composite.sh -r

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
  • Create a new section on download archive page
  • Create a new section in the New & Noteworthy
  • major releases Add a link to the new API baseline on the download archive page and update the developer page
  • major releases Archive project plan in mylyn/docs

Update Babel

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

Announce Release

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

  • Edit /mylyn/notification.xml in website CVS

Update Eclipse Info Center

Update Marketplace Listings

After the Release

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
  • Set versions of org.eclipse.mylyn.commons/org.eclipse.mylyn to the next release version
  • Update version in CoreUtil.FRAMEWORK_VERSION
  • Update URL in ConnectorDiscoveryWizardMainPage.DEFAULT_DIRECTORY_URL

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 cp -a ~/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

  • Add Bugzilla Milestones for the next release
  • major release Add Bugzilla Version for the current release

Update Project Plan

  • major release Update versions and queries in all plan.xml documents
  • major release Update release plans in portal