Jump to: navigation, search

Difference between revisions of "EEF/Releng Guide"

< EEF
(Automatically)
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Back To|name=EEF|href=EEF}}
 
 
 
= EEF Releng HOW TO =
 
= EEF Releng HOW TO =
The EEF project is built using [[Athena Common Build]], with this [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org.eclipse.emf.eef/releng/?pathrev=MAIN&root=Modeling_Project releng project].
+
The EEF project is built using [[Athena Common Build]], [[Buckminster]] and [[Tycho]].
 
+
 
== How to start a build? ==
 
== How to start a build? ==
  
Line 9: Line 6:
  
 
* Nightly builds are run every 6 hours everyday, at 03:41, 09:41, 15:41 and 21:41 EST, monitoring every change in CVS.
 
* Nightly builds are run every 6 hours everyday, at 03:41, 09:41, 15:41 and 21:41 EST, monitoring every change in CVS.
 
* Integration builds are started every Tuesday at 18:12 EST, even if there is no modification on CVS.
 
 
{{warning|Builds Differences| Be careful on what is build. Nightly builds are built against CVS HEAD, and integration are built against CVS v0_7_1_BRANCH.}}
 
  
 
=== Manually ===
 
=== Manually ===
  
 
* Only committers in the EEF project can launch build jobs from Hudson. ( do not forget to login )
 
* Only committers in the EEF project can launch build jobs from Hudson. ( do not forget to login )
* Nightly build : go to the [https://build.eclipse.org/hudson/job/cbi-emf-eef-0.7-nightly/ nightly job]
+
* 0.8 build [Athena] : go to the [https://hudson.eclipse.org/hudson/job/emf-eef-0.8/ 0.8.x job]
* Integration build : go to the [https://build.eclipse.org/hudson/job/cbi-emf-eef-0.7-integration/ integration job]
+
* 0.9 build [buckminster] : go to the [https://hudson.eclipse.org/hudson/job/emf-eef-0.9/ 0.9.x job]
 +
* 1.0 build [buckminster] : go to the [https://hudson.eclipse.org/hudson/job/emf-eef-1.0/ 1.0.x job]
 +
* 1.1 build [tycho] : go to the [https://hudson.eclipse.org/hudson/job/emf-eef-master/ 1.1.x job]
  
 
Then:
 
Then:
 
* In Hudson, click on '''Build Now''', change the build parameters as needed (see [[#Build parameters]]), and click on '''Build'''.
 
* In Hudson, click on '''Build Now''', change the build parameters as needed (see [[#Build parameters]]), and click on '''Build'''.
 
* You can then click on the job name in the ''Build History'' section in the left column, and then on '''Console Output''', to follow build progress in real time.
 
* You can then click on the job name in the ''Build History'' section in the left column, and then on '''Console Output''', to follow build progress in real time.
 +
 +
== How to test a build? ==
 +
you can test the latest successful build directly on hudson using the update site URL below :
 +
* 1.1 build : https://hudson.eclipse.org/hudson/job/emf-eef-master/lastSuccessfulBuild/artifact/org.eclipse.emf/org.eclipse.emf.eef/releng/org.eclipse.emf.eef.update/target/repository/
 +
* 1.0 build : https://hudson.eclipse.org/hudson/job/emf-eef-1.0/lastSuccessfulBuild/artifact/EEF.p2.repository/
 +
* 0.9 build : https://hudson.eclipse.org/hudson/job/emf-eef-0.9/lastSuccessfulBuild/artifact/EEF.p2.repository/
 +
* 0.8 build : this build only provides a zipped update site.
 +
 +
Use with caution, the contents can be totally untested.
  
 
== How to publish a build? ==
 
== How to publish a build? ==
 
=== Automatically ===
 
=== Automatically ===
Successful '''N'''ightly and '''I'''ntegration builds are automatically published to download.eclipse.org.
+
All successful builds are automatically published to download.eclipse.org once a day.
 
These promote actions are done by a cron job on the build server :  
 
These promote actions are done by a cron job on the build server :  
  
  # daily N EEF builds
+
  # daily 1.2 EEF builds
  45 22 * * * bash /opt/users/hudsonbuild/.hudson/jobs/cbi-emf-eef-0.7-nightly/workspace/org.eclipse.emf/org.eclipse.emf.eef/releng/bash-promote-N.sh
+
  ant -f /shared/jobs/emf-eef-1.2/lastSuccessful/archive/releng/org.eclipse.emf.eef.update/target/promotion/promoter.xml -verbose > cronLog-1.2.txt
  # weekly I EEF builds
+
# daily 1.1 EEF builds
  12 19 * * 2 bash /opt/users/hudsonbuild/.hudson/jobs/cbi-emf-eef-0.7-integration/workspace/org.eclipse.emf/org.eclipse.emf.eef/releng/bash-promote-I.sh
+
4 11 * * * ant -f /shared/jobs/emf-eef-1.1/lastSuccessful/archive/org.eclipse.emf/org.eclipse.emf.eef/releng/org.eclipse.emf.eef.update/target/promotion/promoter.xml -verbose > cronLog-1.1.txt
 +
  # daily 1.0 EEF builds
 +
  3 17 * * * ant -f /shared/jobs/emf-eef-1.0/lastSuccessful/archive/publishroot/publisher.ant -verbose > cronLog-1.0.txt
 +
# daily 0.9 EEF builds
 +
5 22 * * * ant -f /shared/jobs/emf-eef-0.9/lastSuccessful/archive/publishroot/publisher.ant -verbose > cronLog-0.9.txt
 +
# weekly 0.8 EEF builds
 +
12 19 * * 2 bash /shared/jobs/emf-eef-integration/workspace/org.eclipse.emf/org.eclipse.emf.eef/releng/bash-promote-I.sh
  
The called scripts ( available [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org.eclipse.emf.eef/releng/?pathrev=MAIN&root=Modeling_Project here]) unpack the update sites in the correct places, and copies the necessary files in correct places, too.
+
The called scripts unpack the update sites in the correct places, and copies the necessary files in correct places, too.
  
These builds can then be seen and downloaded from [http://www.eclipse.org/modeling/emft/downloads/?project=eef the EMFT download page], where additional information is available (test results, build log, build configuration, build dependencies).
+
These builds can then be seen and downloaded from [http://www.eclipse.org/modeling/emft/downloads/?project=eef the EEF download page], where additional information is available (test results, build log, build configuration, build dependencies).
  
 
See also the [[EEF_Installation_Guide | EEF Installation page]] to use the update sites if wanted.
 
See also the [[EEF_Installation_Guide | EEF Installation page]] to use the update sites if wanted.
  
 
=== Manually ===
 
=== Manually ===
'''S'''table, '''M'''aintenance and '''R'''elease builds are not automatically published. They should be first tested internally before publishing.  
+
you can manually publish a successful build, a Release build for example.
After testing, you should use the specific [http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.emf/org.eclipse.emf.eef/releng/bash-promote-SimultaneousRelease.sh?view=log&root=Modeling_Project&pathrev=MAIN promote script] to promote in the right place.
+
After testing, ssh to build.eclipse.org with commiter id and password and use the above script depending on what build you want to promote.
 
+
{{warning|promote Milestones build| This last script update also the helios build train. use it with caution !}}
+
  
 
== Build parameters ==
 
== Build parameters ==
Hudson builds expect these parameters:
+
 
* PROJECTID : modeling.emf.eef : no reason to change this
+
=== Buckminster based builds [0.9-1.0]===
 +
* PROJECTID : modeling.emft.eef : no reason to change this
 
* VERSION : the version being built.
 
* VERSION : the version being built.
 
* BUILDTYPE : the kind of build, represented by a code letter (see [http://www.eclipse.org/modeling/downloads/build-types.php this page]):
 
* BUILDTYPE : the kind of build, represented by a code letter (see [http://www.eclipse.org/modeling/downloads/build-types.php this page]):
Line 56: Line 65:
 
** '''S''': Stable (for Milestones and Release Candidate builds)
 
** '''S''': Stable (for Milestones and Release Candidate builds)
 
** '''R''': Release
 
** '''R''': Release
 
For Integration builds, you can modify these parameters :
 
 
* BUILDALIAS : for release, maintenance and stable builds, use this option to give a more meaningful name to the build. For example, add <code>0.8.0M2</code> to get "EEF-SDK-incubation-0.8.0M2.zip" instead of "EEF-SDK-incubation-Sxxxx.zip".
 
* BUILDALIAS : for release, maintenance and stable builds, use this option to give a more meaningful name to the build. For example, add <code>0.8.0M2</code> to get "EEF-SDK-incubation-0.8.0M2.zip" instead of "EEF-SDK-incubation-Sxxxx.zip".
 
* FETCHTAG : Force a specific tag to be used when pulling sources from CVS. For example, use <code>HEAD</code> to build from HEAD instead of from the versions specified in the releng project's map files.
 
* FETCHTAG : Force a specific tag to be used when pulling sources from CVS. For example, use <code>HEAD</code> to build from HEAD instead of from the versions specified in the releng project's map files.
  
It is also possible to modify the configuration of the jobs directly  via the job's configuration page if needed. ( see [[Common_Build_Infrastructure/Getting_Started/Build_In_Hudson/Ant_Job | this page]]).
+
=== Tycho builds [1.1]===
 +
* BUILD_TYPE : the kind of build, represented by a code letter (see [http://www.eclipse.org/modeling/downloads/build-types.php this page]):
 +
** '''N''': Nightly
 +
** '''I''': Integration
 +
** '''S''': Stable (for Milestones and Release Candidate builds)
 +
** '''R''': Release
 +
* BUILD_ALIAS : for release, maintenance and stable builds, use this option to give a more meaningful name to the build. For example, add <code>1.1.0M2</code> to get "EEF-SDK-1.1.0M2.zip" instead of "EEF-SDK-Sxxxx.zip".
 +
* BUILD_SIGN : set to true when building a S or R, for signing the repo
  
 
== Building locally ==
 
== Building locally ==
  
First, checkout EEF projects into your workspace, [[EEF_Sources | see this page]].
+
First, checkout EEF projects into your workspace :pserver:dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.eef/  
 
+
Checkout also the releng projects :
+
* :pserver:dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.eef/releng
+
* :pserver:dev.eclipse.org:/cvsroot/technology,org.eclipse.dash/athena/org.eclipse.dash.commonbuilder/org.eclipse.dash.common.releng,org.eclipse.dash.common.releng
+
* :pserver:dev.eclipse.org:/cvsroot/eclipse,org.eclipse.releng.basebuilder,org.eclipse.releng.basebuilder,r35x_v20090811
+
 
+
Then, setup the <code>build.properties<code> file in the releng project with correct information for your system:
+
* Set all the <code>JAVA*_HOME</code> properties to the location of your JDK install (eg: <code>/usr/lib/jvm/java-1.6.0-openjdk</code> or <code>C:/Program Files/Java/jdk1.6.0_16</code>)
+
* Set the <code>WORKSPACE</code> property to a writable directory (eg: <code>/tmp</code> or <code>C:/temp</code>)
+
* change the <code>dependencyURLs</code> with the Eclipse SDK zip specific to your platform
+
  
Additionally, you should change all the <code>dependencyURLs</code> to point to one of your local Eclipse mirrors, to avoid saturating the main Eclipse download server, and getting extremely slow downloads.
+
Then install maven 3 somewhere in your filesystem.
  
Alternatively, you can download the dependencies manually and put them in your <code>downloadsDir</code>. The build will then use the files you provided instead of downloading them itself.
+
Then simply use the external tool launch configuration to build EEF with tycho. Modify the path of the program to launch to point to the maven3 installation directory.
 
+
Finally, start the build by right-clicking the <code>build.xml</code> file in the releng project inside Eclipse and choosing '''Run as > Ant Build'''.
+
  
 
=Retention Policy=
 
=Retention Policy=
  
== Code in CVS ==
+
== Code in SCM ==
  
Any code that was included in a Release, is left in CVS forever. For all major version, a branch is created with a convenient name, like "0_8_BRANCH". The maps files are the definitive authority on what was included in a release.
+
Any code that was included in a Release, is left in SCM forever. For all major version, a branch is created with a convenient name, like "0_8_BRANCH". For each Released version, a tag is created with convenient name, like "0_8_0_RELEASE".
  
=== Distributions in zip files ===
+
== Distributions in zip files ==
  
Formal releases are kept forever, but only the most recent release is kept on the main download page ( see [http://wiki.eclipse.org/EEF_Installation_Guide installation guide]. Other, older distributions can be found on the archive site.  
+
Formal releases are kept forever, but only the most recent release is kept on the main download page ( see [http://wiki.eclipse.org/EEF_Installation_Guide installation guide] ). Other, older distributions can be found on the archive site.  
  
 
While developing a new releases, ALL milestone builds are kept until the release, at which point they are deleted.  
 
While developing a new releases, ALL milestone builds are kept until the release, at which point they are deleted.  
Line 99: Line 101:
 
Finally, while developing an integration build, nightly are kept until the integration is available, and then they are deleted.
 
Finally, while developing an integration build, nightly are kept until the integration is available, and then they are deleted.
  
=== Features in update site repository ===  
+
== Features in update site repository ==  
  
Only the most recent release (and/or patches) are kept on the update site. The goal is to allow users to update to the latest code from what they have installed, but we don't support updating to some previous release. For example, if we come out with a "3.0.3", the "3.0.2" version won't be on the update site any longer. So, someone with "3.0.0" installed could update to "3.0.3", but they could no longer update only to "3.0.2", once 3.0.3 was released.
+
EEF provides only p2 repository.
  
see [http://wiki.eclipse.org/EEF_Installation_Guide installation guide] for the list of available update sites.
+
Like distribution in zip files, all releases are kept forever on update sites. For each release, there will be a composite repository that aggregates all the releases for a major version.
  
The update site repository will be treated as a persistent repository of content. (From WTP 3.1.1, onward.) Once s
+
While developing a new releases, ALL milestone updates sites are kept until the release, at which point they are deleted.  
 +
 
 +
Similarly, while developing a milestone, weekly integration updates sites are kept until the milestone is available, and then they are deleted.
 +
 
 +
Finally, while developing an integration updates sites, nightly are kept until the integration is available, and then they are deleted.
 +
 
 +
see [http://wiki.eclipse.org/EEF_Installation_Guide installation guide] for the list of available update sites.
  
 
[[Category:EEF]]
 
[[Category:EEF]]
 
[[Category:Releng]]
 
[[Category:Releng]]
 
[[Category:Athena Common Build Users]]
 
[[Category:Athena Common Build Users]]

Latest revision as of 11:03, 28 November 2012

EEF Releng HOW TO

The EEF project is built using Athena Common Build, Buckminster and Tycho.

How to start a build?

Automatically

  • Nightly builds are run every 6 hours everyday, at 03:41, 09:41, 15:41 and 21:41 EST, monitoring every change in CVS.

Manually

  • Only committers in the EEF project can launch build jobs from Hudson. ( do not forget to login )
  • 0.8 build [Athena] : go to the 0.8.x job
  • 0.9 build [buckminster] : go to the 0.9.x job
  • 1.0 build [buckminster] : go to the 1.0.x job
  • 1.1 build [tycho] : go to the 1.1.x job

Then:

  • In Hudson, click on Build Now, change the build parameters as needed (see #Build parameters), and click on Build.
  • You can then click on the job name in the Build History section in the left column, and then on Console Output, to follow build progress in real time.

How to test a build?

you can test the latest successful build directly on hudson using the update site URL below :

Use with caution, the contents can be totally untested.

How to publish a build?

Automatically

All successful builds are automatically published to download.eclipse.org once a day. These promote actions are done by a cron job on the build server :

# daily 1.2 EEF builds
ant -f /shared/jobs/emf-eef-1.2/lastSuccessful/archive/releng/org.eclipse.emf.eef.update/target/promotion/promoter.xml -verbose > cronLog-1.2.txt
# daily 1.1 EEF builds
4 11 * * * ant -f /shared/jobs/emf-eef-1.1/lastSuccessful/archive/org.eclipse.emf/org.eclipse.emf.eef/releng/org.eclipse.emf.eef.update/target/promotion/promoter.xml -verbose > cronLog-1.1.txt
# daily 1.0 EEF builds
3 17 * * * ant -f /shared/jobs/emf-eef-1.0/lastSuccessful/archive/publishroot/publisher.ant -verbose > cronLog-1.0.txt
# daily 0.9 EEF builds
5 22 * * * ant -f /shared/jobs/emf-eef-0.9/lastSuccessful/archive/publishroot/publisher.ant -verbose > cronLog-0.9.txt
# weekly 0.8 EEF builds
12 19 * * 2 bash /shared/jobs/emf-eef-integration/workspace/org.eclipse.emf/org.eclipse.emf.eef/releng/bash-promote-I.sh

The called scripts unpack the update sites in the correct places, and copies the necessary files in correct places, too.

These builds can then be seen and downloaded from the EEF download page, where additional information is available (test results, build log, build configuration, build dependencies).

See also the EEF Installation page to use the update sites if wanted.

Manually

you can manually publish a successful build, a Release build for example. After testing, ssh to build.eclipse.org with commiter id and password and use the above script depending on what build you want to promote.

Build parameters

Buckminster based builds [0.9-1.0]

  • PROJECTID : modeling.emft.eef : no reason to change this
  • VERSION : the version being built.
  • BUILDTYPE : the kind of build, represented by a code letter (see this page):
    • N: Nightly
    • I: Integration
    • M: Maintenance (NOT milestone)
    • S: Stable (for Milestones and Release Candidate builds)
    • R: Release
  • BUILDALIAS : for release, maintenance and stable builds, use this option to give a more meaningful name to the build. For example, add 0.8.0M2 to get "EEF-SDK-incubation-0.8.0M2.zip" instead of "EEF-SDK-incubation-Sxxxx.zip".
  • FETCHTAG : Force a specific tag to be used when pulling sources from CVS. For example, use HEAD to build from HEAD instead of from the versions specified in the releng project's map files.

Tycho builds [1.1]

  • BUILD_TYPE : the kind of build, represented by a code letter (see this page):
    • N: Nightly
    • I: Integration
    • S: Stable (for Milestones and Release Candidate builds)
    • R: Release
  • BUILD_ALIAS : for release, maintenance and stable builds, use this option to give a more meaningful name to the build. For example, add 1.1.0M2 to get "EEF-SDK-1.1.0M2.zip" instead of "EEF-SDK-Sxxxx.zip".
  • BUILD_SIGN : set to true when building a S or R, for signing the repo

Building locally

First, checkout EEF projects into your workspace :pserver:dev.eclipse.org:/cvsroot/modeling,org.eclipse.emf/org.eclipse.emf.eef/

Then install maven 3 somewhere in your filesystem.

Then simply use the external tool launch configuration to build EEF with tycho. Modify the path of the program to launch to point to the maven3 installation directory.

Retention Policy

Code in SCM

Any code that was included in a Release, is left in SCM forever. For all major version, a branch is created with a convenient name, like "0_8_BRANCH". For each Released version, a tag is created with convenient name, like "0_8_0_RELEASE".

Distributions in zip files

Formal releases are kept forever, but only the most recent release is kept on the main download page ( see installation guide ). Other, older distributions can be found on the archive site.

While developing a new releases, ALL milestone builds are kept until the release, at which point they are deleted.

Similarly, while developing a milestone, weekly integration builds are kept until the milestone is available, and then they are deleted.

Finally, while developing an integration build, nightly are kept until the integration is available, and then they are deleted.

Features in update site repository

EEF provides only p2 repository.

Like distribution in zip files, all releases are kept forever on update sites. For each release, there will be a composite repository that aggregates all the releases for a major version.

While developing a new releases, ALL milestone updates sites are kept until the release, at which point they are deleted.

Similarly, while developing a milestone, weekly integration updates sites are kept until the milestone is available, and then they are deleted.

Finally, while developing an integration updates sites, nightly are kept until the integration is available, and then they are deleted.

see installation guide for the list of available update sites.