Difference between revisions of "RAP/Build Process"

From Eclipsepedia

< RAP
Jump to: navigation, search
m (Procedure for Milestone builds)
m (Hudson Builds)
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
Since version 1.5, RAP is built on the public build server at Eclipse.
+
Since version 1.5, RAP is built on the public Hudson build servers at Eclipse.org.
  
 
=== Hudson Builds ===
 
=== Hudson Builds ===
  
Build jobs at the Eclipse.org Hudson:
+
From RAP version 2.1 on all RAP build jobs are running on a dedicated [https://hudson.eclipse.org/rap/ RAP Hudson instance]; older build jobs are still available at the central [https://hudson.eclipse.org/hudson/ Eclipse.org Hudson cluster]:
* [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]
+
  
* [https://hudson.eclipse.org/hudson/job/rap-2.0-runtime/ rap-2.0-runtime]
+
{| border="1"
* [https://hudson.eclipse.org/hudson/job/rap-2.0-tools/ rap-2.0-tools]
+
|-
* [https://hudson.eclipse.org/hudson/ rap-2.0-incubator-COMPONENT_NAME]
+
! RAP 1.5 !! RAP 2.0 !! RAP 2.1 !! RAP 2.2 !! RAP 2.3 !! RAP 3.x (head)
 +
|-
 +
| [https://hudson.eclipse.org/hudson/job/rap-1.5-runtime/ rap-1.5-runtime]
 +
| [https://hudson.eclipse.org/hudson/job/rap-2.0-runtime/ rap-2.0-runtime]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.1-runtime/ rap-2.1-runtime]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.2-runtime/ rap-2.2-runtime]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.3-runtime/ rap-2.3-runtime]
 +
| [https://hudson.eclipse.org/rap/job/rap-head-runtime/ rap-head-runtime]
 +
|-
 +
| [https://hudson.eclipse.org/hudson/job/rap-1.5-tools/ rap-1.5-tools]
 +
| [https://hudson.eclipse.org/hudson/job/rap-2.0-tools/ rap-2.0-tools]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.1-tools/ rap-2.1-tools]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.2-tools/ rap-2.2-tools]
 +
| [https://hudson.eclipse.org/rap/job/rap-2.3-tools/ rap-2.3-tools]
 +
| [https://hudson.eclipse.org/rap/job/rap-head-tools/ rap-head-tools]
 +
|-
 +
| [https://hudson.eclipse.org/hudson/job/rap-1.5-incubator/ rap-1.5-incubator]
 +
|
 +
|
 +
|
 +
|
 +
| [https://hudson.eclipse.org/rap/view/RAP%20incubator%20builds/ rap-head-incubator-COMPONENT_NAME]
 +
|}
  
 
The base directory for our builds is <code>/shared/rt/rap</code> on <code>build.eclipse.org</code>.
 
The base directory for our builds is <code>/shared/rt/rap</code> on <code>build.eclipse.org</code>.
Line 20: Line 39:
 
* http://download.eclipse.org/rt/rap/nightly/tooling/
 
* http://download.eclipse.org/rt/rap/nightly/tooling/
  
These p2 repositories are updated by a cron job:
+
These p2 repositories are updated by a [https://hudson.eclipse.org/rap/job/rap-head-publish/ rap-head-publish] job that runs after the ''master'' jobs are run.
/shared/rt/rap/scripts/publish-nightly-build.sh
+
This job is run by rsternber's crontab.
+
  
 
=== Procedure for Milestone builds ===
 
=== Procedure for Milestone builds ===
  
* Prepare new base platform in <code>/shared/rt/rap/base-platforms</code> (see <code>HOWTO</code> file)
+
* Prepare new base platform in <code>/shared/rt/rap/base-platforms</code> (see <code>HOWTO.create</code> file)
 
* Configure pom.xml files to include the new base platform
 
* Configure pom.xml files to include the new base platform
** <code>releng/org.eclipse.rap.build/pom.xml</code> (RAP Runtime)
+
** RAP Runtime
** <code>releng/org.eclipse.rap.target.build/pom.xml</code> (RAP Runtime)
+
*** <code>releng/org.eclipse.rap.build/pom.xml</code>: base-platform-luna property and base-platform-repository repository
** <code>releng/org.eclipse.rap.tools.build/pom.xml</code> (RAP Tools)
+
*** <code>releng/org.eclipse.rap.build/repository.luna/pom.xml</code>: base-platform-repository-with-ICU-bundle repository
* Build RAP Runtime and RAP Tools with <code>BUILD_TYPE</code> = <code>S</code> for stable builds (these will be signed)
+
*** <code>features/org.eclipse.rap.equinox.target.feature/pom.xml</code>: base-platform-repository-with-ICU-bundle
 +
*** Enforce generation of new qualifier by "touching" <code>features/org.eclipse.rap.equinox.target.feature/.forceQualifierUpdate</code>
 +
** RAP Tools
 +
*** Update target definition in <code>releng/org.eclipse.rap.tools.build/target.definition/org.eclipse.rap.tools.target.definition.target</code>
 +
*** Enforce generation of new qualifier by "touching" <code>features/org.eclipse.rap.tools.feature/.forceQualifierUpdate</code> and <code>features/org.eclipse.rap.tools.transition.feature/.forceQualifierUpdate</code>
 +
* Build RAP Runtime two times, one time with <code>BUILD_TYPE</code> = <code>S</code> (signing, without tests), and another time with <code>BUILD_TYPE</code> = <code>N</code> (unsigned, with tests). Build RAP Tools.
 
* Move repositories to download area (see <code>/shared/rt/rap/publish/</code>)
 
* Move repositories to download area (see <code>/shared/rt/rap/publish/</code>)
 
* Contribute repositories to simrel aggregator
 
* Contribute repositories to simrel aggregator
 +
** In most cases it is required to disable the Scout RAP contribution because of conflicting dependencies. The Scout project enables its contribution a day later when they contribute their updated build.
 
* Add tag to git repositories
 
* Add tag to git repositories
** <code>TAG=1.5.0-Mx-YYYYMMDD</code>
+
** <code>TAG=2.3.0-RCx</code>
 
** <code>git tag -a -m "$TAG" -s $TAG</code> (note: -s creates a signed tag)
 
** <code>git tag -a -m "$TAG" -s $TAG</code> (note: -s creates a signed tag)
 
** <code>git push --tags origin</code>
 
** <code>git push --tags origin</code>
 +
* Upload RWT bundles to [[RAP/Maven_Central | Maven Central repository]].
  
 
==== Publishing ====
 
==== Publishing ====
Line 50: Line 74:
 
* 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)
 +
 +
* Publish RWT bundles in the [[RAP/Maven_Central | Maven Central repository]].
  
 
=== Procedure for release builds ===
 
=== Procedure for release builds ===
Line 62: Line 88:
 
* 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 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 [http://marketplace.eclipse.org/content/remote-application-platform-tools Eclipse Marketplace] and in the Yoxos Marketplace. They should point to the latest release.
 
* Redirect rap/latest-release/{runtime/tooling} repositories
 
* Redirect rap/latest-release/{runtime/tooling} repositories
 
* notify newsgroup and mailing list
 
* 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)
 
* 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)
 +
* Add p2.stats to artifact.xml
 +
* Add p2 mirror URLs to artifact.xml
  
 
* Check <code>notice.html</code> and <code>epl-v10.html</code> files for updates
 
* 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])
 
* 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 ====
+
* Publish RWT bundles in the [[RAP/Maven_Central | Maven Central repository]].
 
+
Make sure RWT bundles are available in the maven central repository. See [[RAP/Maven_Central | Maven Central]].
+
  
 
==== Eclipse Marketplace ====
 
==== Eclipse Marketplace ====
Line 103: Line 129:
 
* clientscripting
 
* clientscripting
 
* cnf
 
* cnf
 +
* dropdown
 
* fileupload
 
* fileupload
 
* gef
 
* gef
Line 108: Line 135:
 
* osgi-packaging
 
* osgi-packaging
 
* pde
 
* pde
 +
* richtext
 
* tabbed-properties
 
* tabbed-properties
 
* visualization
 
* 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].
 
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].

Latest revision as of 09:56, 19 June 2014

Since version 1.5, RAP is built on the public Hudson build servers at Eclipse.org.

Contents

[edit] Hudson Builds

From RAP version 2.1 on all RAP build jobs are running on a dedicated RAP Hudson instance; older build jobs are still available at the central Eclipse.org Hudson cluster:

RAP 1.5 RAP 2.0 RAP 2.1 RAP 2.2 RAP 2.3 RAP 3.x (head)
rap-1.5-runtime rap-2.0-runtime rap-2.1-runtime rap-2.2-runtime rap-2.3-runtime rap-head-runtime
rap-1.5-tools rap-2.0-tools rap-2.1-tools rap-2.2-tools rap-2.3-tools rap-head-tools
rap-1.5-incubator rap-head-incubator-COMPONENT_NAME

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

[edit] Nightly Builds

We produce p2 repositories from our nightly builds:

These p2 repositories are updated by a rap-head-publish job that runs after the master jobs are run.

[edit] Procedure for Milestone builds

  • Prepare new base platform in /shared/rt/rap/base-platforms (see HOWTO.create file)
  • Configure pom.xml files to include the new base platform
    • RAP Runtime
      • releng/org.eclipse.rap.build/pom.xml: base-platform-luna property and base-platform-repository repository
      • releng/org.eclipse.rap.build/repository.luna/pom.xml: base-platform-repository-with-ICU-bundle repository
      • features/org.eclipse.rap.equinox.target.feature/pom.xml: base-platform-repository-with-ICU-bundle
      • Enforce generation of new qualifier by "touching" features/org.eclipse.rap.equinox.target.feature/.forceQualifierUpdate
    • RAP Tools
      • Update target definition in releng/org.eclipse.rap.tools.build/target.definition/org.eclipse.rap.tools.target.definition.target
      • Enforce generation of new qualifier by "touching" features/org.eclipse.rap.tools.feature/.forceQualifierUpdate and features/org.eclipse.rap.tools.transition.feature/.forceQualifierUpdate
  • Build RAP Runtime two times, one time with BUILD_TYPE = S (signing, without tests), and another time with BUILD_TYPE = N (unsigned, with tests). Build RAP Tools.
  • Move repositories to download area (see /shared/rt/rap/publish/)
  • Contribute repositories to simrel aggregator
    • In most cases it is required to disable the Scout RAP contribution because of conflicting dependencies. The Scout project enables its contribution a day later when they contribute their updated build.
  • Add tag to git repositories
    • TAG=2.3.0-RCx
    • git tag -a -m "$TAG" -s $TAG (note: -s creates a signed tag)
    • git push --tags origin
  • Upload RWT bundles to Maven Central repository.

[edit] 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)

[edit] 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.
  • 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)
  • Add p2.stats to artifact.xml
  • Add p2 mirror URLs to artifact.xml
  • 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)

[edit] Eclipse Marketplace

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

[edit] Simultaneous Release

[edit] 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
  • dropdown
  • fileupload
  • gef
  • nebula-grid
  • osgi-packaging
  • pde
  • richtext
  • tabbed-properties
  • visualization

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