Jump to: navigation, search

Difference between revisions of "Gyrex/Contributor Guide/Builds"

(Build Process)
(revised (now Git))
Line 2: Line 2:
  
 
== RelEng Project ==
 
== RelEng Project ==
The root for all build related stuff is the Gyrex RelEng (Release Engineering) project. It contains [http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.gyrex/releng/org.eclipse.gyrex.releng/builder/?root=Technology_Project build scripts], [http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.gyrex/releng/org.eclipse.gyrex.releng/maps/?root=Technology_Project map files], [http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.gyrex/releng/org.eclipse.gyrex.releng/targets/?root=Technology_Project target platform definitions] and [http://dev.eclipse.org/viewcvs/viewvc.cgi/org.eclipse.gyrex/releng/org.eclipse.gyrex.releng/products/?root=Technology_Project product configurations].
+
The root for all build related stuff is the Gyrex RelEng (Release Engineering) project. It contains:
 +
* [http://git.eclipse.org/c/gyrex/gyrex-releng.git/tree/org.eclipse.gyrex.releng/builder/ build scripts],
 +
* [http://git.eclipse.org/c/gyrex/gyrex-releng.git/tree/org.eclipse.gyrex.releng/maps/ map files],
 +
* [http://git.eclipse.org/c/gyrex/gyrex-releng.git/tree/org.eclipse.gyrex.releng/targets/ target platform definitions],
 +
* [http://git.eclipse.org/c/gyrex/gyrex-releng.git/tree/org.eclipse.gyrex.releng/products/ product configurations] and
 +
* [http://git.eclipse.org/c/gyrex/gyrex-releng.git/tree/org.eclipse.gyrex.releng/features/ features].
 
<pre>
 
<pre>
:pserver:anonymous@dev.eclipse.org:/cvsroot/technology/org.eclipse.gyrex/releng/org.eclipse.gyrex.releng
+
git://git.eclipse.org/gitroot/gyrex/gyrex-releng.git
 
</pre>
 
</pre>
  
== Build Process ==
+
=== Target Definition ===
 +
The Target Definition is used for dependency management. All dependencies are listed as p2 repositories hosted at Eclipse.
 +
 
 +
=== Product Configuration and Features ===
 +
The Product Configuration generates the various downloadable artifacts (eg. Gyrex Server ZIP). It references Eclipse Features which define collection of bundles that are meant to be build/deployed together. There are two types of features - regular Gyrex features and dependency-only features. Gyrex features collect Gyrex bundles. Dependency-only feature collect all dependencies. This makes it easy to customize Gyrex based products with different dependencies by using custom features.
 +
 
 +
=== Build Scripts and Map Files ===
 +
The build scripts and map files are used to drive the automatic build and tagging process on Hudson. A cron script checks Git repositories regularly for updates. If new commits are found, a repository is tagged, the map file is updated with the new tag and a Hudson build will be started. PDE Build uses the map files to calculate a bundle qualifier.
 +
 
 +
== Local Build Process from Eclipse ==
 +
It is possible to setup the headless build process (see below) locally. However, a more straightforward approach is to simply use the PDE Product Export wizard that's available in Eclipse. It requires to have the target platform configured and all Gyrex bundles imported in your workspace. The export can be started via ''File -> Export... -> Product configuration'' menu.
 +
 
 +
[[Image:Gyrex-product-export.png]]
 +
 
 +
 
 +
== Headless Build Process ==
 
The build process is entirely based on PDE Build (which is based on Ant). The main build script includes targets for calling from a plain Ant as well as from an Eclipse Ant. The plain Ant target bootstraps a PDE Builder from Eclipse CVS and then launches the Eclipse target using Eclipse Ant. There is also a shared external tool launch configuration that can be used for building from within Eclipse.
 
The build process is entirely based on PDE Build (which is based on Ant). The main build script includes targets for calling from a plain Ant as well as from an Eclipse Ant. The plain Ant target bootstraps a PDE Builder from Eclipse CVS and then launches the Eclipse target using Eclipse Ant. There is also a shared external tool launch configuration that can be used for building from within Eclipse.
  

Revision as of 06:43, 7 November 2012

Gyrex builds are produced on the Eclipse.org infrastructure. It's also possible to build locally.

RelEng Project

The root for all build related stuff is the Gyrex RelEng (Release Engineering) project. It contains:

git://git.eclipse.org/gitroot/gyrex/gyrex-releng.git

Target Definition

The Target Definition is used for dependency management. All dependencies are listed as p2 repositories hosted at Eclipse.

Product Configuration and Features

The Product Configuration generates the various downloadable artifacts (eg. Gyrex Server ZIP). It references Eclipse Features which define collection of bundles that are meant to be build/deployed together. There are two types of features - regular Gyrex features and dependency-only features. Gyrex features collect Gyrex bundles. Dependency-only feature collect all dependencies. This makes it easy to customize Gyrex based products with different dependencies by using custom features.

Build Scripts and Map Files

The build scripts and map files are used to drive the automatic build and tagging process on Hudson. A cron script checks Git repositories regularly for updates. If new commits are found, a repository is tagged, the map file is updated with the new tag and a Hudson build will be started. PDE Build uses the map files to calculate a bundle qualifier.

Local Build Process from Eclipse

It is possible to setup the headless build process (see below) locally. However, a more straightforward approach is to simply use the PDE Product Export wizard that's available in Eclipse. It requires to have the target platform configured and all Gyrex bundles imported in your workspace. The export can be started via File -> Export... -> Product configuration menu.

Gyrex-product-export.png


Headless Build Process

The build process is entirely based on PDE Build (which is based on Ant). The main build script includes targets for calling from a plain Ant as well as from an Eclipse Ant. The plain Ant target bootstraps a PDE Builder from Eclipse CVS and then launches the Eclipse target using Eclipse Ant. There is also a shared external tool launch configuration that can be used for building from within Eclipse.

The build process if as follows:

  • Bootstrap PDE Builder
  • Build target platform from target definition (using p2 mirror functionality)
  • Fetch sources using map files
  • Build org.eclipse.gyrex.features.master
  • Assemble Gyrex Server Product
  • Produce final p2 Repo (including signing of artifacts when executed on Eclipse.org infrastructure)
  • Publish to download.eclipse.org (when executed on Eclipse.org infrastructure)

Hudson Build Jobs

The nightly job is used for CI compile check builds. It monitors the full source tree for changes and kicks of a build every once in a while when somebody checked something into source control. However, it always uses HEAD when performing checkouts. The build results should not be used.

The integration job is used for producing I, S and R builds. Care must be taken when producing S and R builds. The results are automatically published to download.eclipse.org (when running on Eclipse.org infrastructure).