Difference between revisions of "RAP/Build Process"

From Eclipsepedia

< RAP
Jump to: navigation, search
(New page: Since version 1.5, RAP is build on the public build server at Eclipse. === Hudson Builds === The build directory is <code>/shared/rt/rap</code> on <code>build.eclipse.org</code> We have...)
 
m (Procedure for Milestone builds)
(32 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Since version 1.5, RAP is build on the public build server at Eclipse.
+
Since version 1.5, RAP is built on the public build server at Eclipse.
  
 
=== Hudson Builds ===
 
=== Hudson Builds ===
  
The build directory is <code>/shared/rt/rap</code> on <code>build.eclipse.org</code>
+
Build jobs at the Eclipse.org Hudson:
 +
* [https://hudson.eclipse.org/hudson/job/rap-1.5-runtime/ rap-1.5-runtime]
 +
* [https://hudson.eclipse.org/hudson/job/rap-1.5-tools/ rap-1.5-tools]
 +
* [https://hudson.eclipse.org/hudson/job/rap-1.5-incubator/ rap-1.5-incubator]
  
We have two builds at the Eclipse.org Hudson:
+
* [https://hudson.eclipse.org/hudson/job/rap-2.0-runtime/ rap-2.0-runtime]
* [https://hudson.eclipse.org/hudson/job/rap-runtime/ rap-runtime]
+
* [https://hudson.eclipse.org/hudson/job/rap-2.0-tools/ rap-2.0-tools]
* [https://hudson.eclipse.org/hudson/job/rap-tooling/ rap-tooling]
+
* [https://hudson.eclipse.org/hudson/ rap-2.0-incubator-COMPONENT_NAME]
  
The simultaneous build aggregator:
+
The base directory for our builds is <code>/shared/rt/rap</code> on <code>build.eclipse.org</code>.
* [https://hudson.eclipse.org/hudson/view/Repository%20Aggregation/job/indigo.runAggregator/ indigo aggregator]
+
  
=== Procedure for Milestone builds ===
+
=== Nightly Builds ===
  
* Tag CVS
+
We produce p2 repositories from our nightly builds:
** Tag everything that is contained in the <code>rt/org.eclipse.rap</code> module, pattern: <code>vYYYYMMDD_R12-Mx</code>
+
* http://download.eclipse.org/rt/rap/nightly/runtime/
*** You may need to increase the CVS connection timeout in <em>Preferences -> Team -> CVS -> Connection</em> tab (120 s seem to work)
+
* http://download.eclipse.org/rt/rap/nightly/tooling/
  
* Prepare new base platform in <code>/shared/rt/rap/base-platforms</code>
+
These p2 repositories are updated by a cron job:
ssh build.eclipsesource.com
+
/shared/rt/rap/scripts/publish-nightly-build.sh
sudo su - build
+
This job is run by rsternber's crontab.
cd /home/build/rap/build-platforms
+
** Download base platform, extract it and include com.ibm.icu.base from http://download.eclipse.org.
+
** Download latest Equinox SDK from http://download.eclipse.org/equinox/ and include the following bundles into the base platform:
+
*** <code>org.eclipse.equinox.servletbridge<code>
+
*** <code>org.eclipse.equinox.servletbridge.extensionbundle<code>
+
*** <code>org.eclipse.equinox.http.servletbridge<code>
+
** We used to delete all junit4 bundles from the plugins folder, probably not needed anymore (?)
+
* Configure the hudson projects to use the new base platform.
+
  
* Build runtime and tooling
+
=== Procedure for Milestone builds ===
** Set parameter BUILD_TYPE to Mx for milestone builds. Make sure the result's filenames include the build type.
+
** Set parameter CVS_TAG to the new tag (see above). DO NOT build milestones from HEAD.
+
  
* Copy notice.html and epl-v10.html into the root directory (eclipse) of the produced zip files (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=347659 bug 347659])
+
* Prepare new base platform in <code>/shared/rt/rap/base-platforms</code> (see <code>HOWTO</code> file)
 +
* Configure pom.xml files to include the new base platform
 +
** <code>releng/org.eclipse.rap.build/pom.xml</code> (RAP Runtime)
 +
** <code>releng/org.eclipse.rap.target.build/pom.xml</code> (RAP Runtime)
 +
** <code>releng/org.eclipse.rap.tools.build/pom.xml</code> (RAP Tools)
 +
* Build RAP Runtime and RAP Tools with <code>BUILD_TYPE</code> = <code>S</code> for stable builds (these will be signed)
 +
* Move repositories to download area (see <code>/shared/rt/rap/publish/</code>)
 +
* Contribute repositories to simrel aggregator
 +
* Add tag to git repositories
 +
** <code>TAG=1.5.0-Mx-YYYYMMDD</code>
 +
** <code>git tag -a -m "$TAG" -s $TAG</code> (note: -s creates a signed tag)
 +
** <code>git push --tags origin</code>
  
* Sign and publish files. This is currently done by the <code>publish.sh</code> script in <code>org.eclipse.rap.releng</code>
+
==== Publishing ====
  
 
* Finalize New & Noteworthy
 
* Finalize New & Noteworthy
* Update web site: new & noteworthy, downloads page, add links to previous version to archive page
+
* Update web site: builds.xml and arrivals sidebar
 
* Scan Bugzilla for open bugs that are targeted at the milestone or bugs that are still open but solved, verify target version of closed bugs
 
* Scan Bugzilla for open bugs that are targeted at the milestone or bugs that are still open but solved, verify target version of closed bugs
 +
* Update composite repositories for runtime and tools
 +
* Update rap/targets/ files
 +
* [1.5 only] Update rap/latest-stable/{runtime/tooling} repositories to redirect to new repo (for compatibility with 1.4 tooling)
 
* Notify the newsgroup
 
* Notify the newsgroup
 
* Announce via Blog
 
* Announce via Blog
 
* Re-deploy demo applications (in oder to demonstrate the new features from the milestone)
 
* Re-deploy demo applications (in oder to demonstrate the new features from the milestone)
  
=== Release builds ===
+
=== Procedure for release builds ===
  
 
additional steps to do when creating release builds
 
additional steps to do when creating release builds
  
* maintain version number in bundle manifests
+
* ensure version numbers in bundle manifests
* maintain about.html files, check that they are included in source build
+
* ensure legal files (see [http://eclipse.org/legal/guidetolegaldoc.php])
 +
** check that about.html are included in source build
 
* update infocenter content and links to infocenter from project home page
 
* update infocenter content and links to infocenter from project home page
* notify newsgroup and mailing list
 
 
* update help plugin
 
* update help plugin
 
* Check copyright year and version number of JavaDoc (search for "JavaDoc" in <code>org.eclipse.rap.releng/tooling/customTargets.xml</code>)
 
* Check copyright year and version number of JavaDoc (search for "JavaDoc" in <code>org.eclipse.rap.releng/tooling/customTargets.xml</code>)
 
* Move old builds to archive (<code>dev.eclipse.org:/home/data/httpd/archive.eclipse.org/rt/rap/downloads</code>), update archive page
 
* Move old builds to archive (<code>dev.eclipse.org:/home/data/httpd/archive.eclipse.org/rt/rap/downloads</code>), update archive page
* Update the P2-repository URLs of install target action (see class o.e.r.ui.internal.intro.target.InstallTargetDialog)
+
* Update the RAP-tooling entry in the [http://marketplace.eclipse.org/content/rich-ajax-platform-rap-tooling Eclipse Marketplace] and in the Yoxos Marketplace. They should point to the latest release. (Beyhan)
* Update the RAP-tooling entry in the Eclipse Marketplace and in the Yoxos Marketplace. They should point to the latest release. (Beyhan)
+
* Redirect rap/latest-release/{runtime/tooling} repositories
 +
* notify newsgroup and mailing list
 +
* use the portal to review project metadata that is displayed in the "About this Project" page (i.e. update release train name in description text)
 +
 
 +
* Check <code>notice.html</code> and <code>epl-v10.html</code> files for updates
 +
* Make sure <code>notice.html</code> and <code>epl-v10.html</code> files are included in the download zip files (see [https://bugs.eclipse.org/bugs/show_bug.cgi?id=347659 bug 347659])
 +
 
 +
==== Maven Central Repository ====
 +
 
 +
Make sure RWT bundles are available in the maven central repository. See [[RAP/Maven_Central | Maven Central]].
 +
 
 +
==== Eclipse Marketplace ====
 +
 
 +
Make sure the RAP Tools are uploaded to the Eclipse market place.
 +
 
 +
=== Simultaneous Release ===
 +
 
 +
* [https://hudson.eclipse.org/hudson/job/simrel.juno.runAggregator/ Juno Aggregator]
 +
* [https://hudson.eclipse.org/hudson/job/simrel.kepler.runaggregator/ Kepler Aggregator]
 +
* [[SimRel/Simultaneous_Release_FAQ|Simultaneous_Release_FAQ]]
 +
 
 +
=== RAP Incubator Builds ===
 +
 
 +
In order to help early adopters consuming the work from the RAP Incubator project, we are running a set of automated builds from Git HEAD for all [http://www.eclipse.org/rap/incubator/ RAP Incubator Projects]. Every component has its own build that must follow some common naming conventions.
 +
 
 +
* Every RAP Incubator Component has a <code>COMPONENT_NAME</code>, that is used to find the necessary build scripts, features, etc.
 +
* Every component has its own Git repository <code>org.eclipse.rap.incubator.COMPONENT_NAME.git</code> at [http://git.eclipse.org/c/rap/incubator/ git.eclipse.org/c/rap/incubator/].
 +
* The build is based on Tycho and uses the RAP Incubator parent [http://git.eclipse.org/c/rap/incubator/org.eclipse.rap.incubator.releng.git/tree/releng/org.eclipse.rap.incubator.releng/pom.xml releng/org.eclipse.rap.incubator.releng/pom.xml].
 +
* The main build project <code>releng/org.eclipse.rap.COMPONENT_NAME.build</code> of the component contains the <code>pom.xml</code> that is used to build the entire component. In addition to that, it has
 +
** a <code>repository/</code> sub-directory with an additional pom that creates the final p2 repository of the component.
 +
* There is a main feature <code>features/org.eclipse.rap.COMPONENT_NAME.feature</code> that assembles everything that is used by a potential consumer.
 +
 
 +
Every build creates an independent p2 repository. All repositories are available on the build server at
 +
 
 +
<code>/shared/rt/rap/incubator/nightly/COMPONENT_NAME</code>
 +
 
 +
At the moment, we are running builds for the following components
 +
 
 +
* clientscripting
 +
* cnf
 +
* fileupload
 +
* gef
 +
* nebula-grid
 +
* osgi-packaging
 +
* pde
 +
* tabbed-properties
 +
* visualization
 +
 
 +
and make them available from [http://build.eclipse.org/rt/rap/incubator/nightly/ build.eclipse.org/rt/rap/incubator/nightly] and from [http://download.eclipse.org/rt/rap/incubator/nightly/ download.eclipse.org/rt/rap/incubator/nightly].

Revision as of 05:29, 17 December 2012

Since version 1.5, RAP is built on the public build server at Eclipse.

Contents

Hudson Builds

Build jobs at the Eclipse.org Hudson:

The base directory for our builds is /shared/rt/rap on build.eclipse.org.

Nightly Builds

We produce p2 repositories from our nightly builds:

These p2 repositories are updated by a cron job:

/shared/rt/rap/scripts/publish-nightly-build.sh

This job is run by rsternber's crontab.

Procedure for Milestone builds

  • Prepare new base platform in /shared/rt/rap/base-platforms (see HOWTO file)
  • Configure pom.xml files to include the new base platform
    • releng/org.eclipse.rap.build/pom.xml (RAP Runtime)
    • releng/org.eclipse.rap.target.build/pom.xml (RAP Runtime)
    • releng/org.eclipse.rap.tools.build/pom.xml (RAP Tools)
  • Build RAP Runtime and RAP Tools with BUILD_TYPE = S for stable builds (these will be signed)
  • Move repositories to download area (see /shared/rt/rap/publish/)
  • Contribute repositories to simrel aggregator
  • Add tag to git repositories
    • TAG=1.5.0-Mx-YYYYMMDD
    • git tag -a -m "$TAG" -s $TAG (note: -s creates a signed tag)
    • git push --tags origin

Publishing

  • Finalize New & Noteworthy
  • Update web site: builds.xml and arrivals sidebar
  • Scan Bugzilla for open bugs that are targeted at the milestone or bugs that are still open but solved, verify target version of closed bugs
  • Update composite repositories for runtime and tools
  • Update rap/targets/ files
  • [1.5 only] Update rap/latest-stable/{runtime/tooling} repositories to redirect to new repo (for compatibility with 1.4 tooling)
  • Notify the newsgroup
  • Announce via Blog
  • Re-deploy demo applications (in oder to demonstrate the new features from the milestone)

Procedure for release builds

additional steps to do when creating release builds

  • ensure version numbers in bundle manifests
  • ensure legal files (see [1])
    • check that about.html are included in source build
  • update infocenter content and links to infocenter from project home page
  • update help plugin
  • Check copyright year and version number of JavaDoc (search for "JavaDoc" in org.eclipse.rap.releng/tooling/customTargets.xml)
  • Move old builds to archive (dev.eclipse.org:/home/data/httpd/archive.eclipse.org/rt/rap/downloads), update archive page
  • Update the RAP-tooling entry in the Eclipse Marketplace and in the Yoxos Marketplace. They should point to the latest release. (Beyhan)
  • Redirect rap/latest-release/{runtime/tooling} repositories
  • notify newsgroup and mailing list
  • use the portal to review project metadata that is displayed in the "About this Project" page (i.e. update release train name in description text)
  • Check notice.html and epl-v10.html files for updates
  • Make sure notice.html and epl-v10.html files are included in the download zip files (see bug 347659)

Maven Central Repository

Make sure RWT bundles are available in the maven central repository. See Maven Central.

Eclipse Marketplace

Make sure the RAP Tools are uploaded to the Eclipse market place.

Simultaneous Release

RAP Incubator Builds

In order to help early adopters consuming the work from the RAP Incubator project, we are running a set of automated builds from Git HEAD for all RAP Incubator Projects. Every component has its own build that must follow some common naming conventions.

  • Every RAP Incubator Component has a COMPONENT_NAME, that is used to find the necessary build scripts, features, etc.
  • Every component has its own Git repository org.eclipse.rap.incubator.COMPONENT_NAME.git at git.eclipse.org/c/rap/incubator/.
  • The build is based on Tycho and uses the RAP Incubator parent releng/org.eclipse.rap.incubator.releng/pom.xml.
  • The main build project releng/org.eclipse.rap.COMPONENT_NAME.build of the component contains the pom.xml that is used to build the entire component. In addition to that, it has
    • a repository/ sub-directory with an additional pom that creates the final p2 repository of the component.
  • There is a main feature features/org.eclipse.rap.COMPONENT_NAME.feature that assembles everything that is used by a potential consumer.

Every build creates an independent p2 repository. All repositories are available on the build server at

/shared/rt/rap/incubator/nightly/COMPONENT_NAME

At the moment, we are running builds for the following components

  • clientscripting
  • cnf
  • fileupload
  • gef
  • nebula-grid
  • osgi-packaging
  • pde
  • tabbed-properties
  • visualization

and make them available from build.eclipse.org/rt/rap/incubator/nightly and from download.eclipse.org/rt/rap/incubator/nightly.