blob: edc7196d06415097b0bcebc1ba7e6e06de57e247 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" href="http://dev.eclipse.org/default_style.css" type="text/css">
</head>
<body>
<H3>Eclipse Platform Release Engineering FAQ</H3>
<H3>&nbsp;</H3>
<H4>Table of contents</H4>
<ol>
<li><a href="#q1">What hardware comprises the platform-releng build infrastructure?</a></li>
<li><a href="#q2">Is the Eclipse platform build process completely automated?</a></li>
<li><a href="#q3">What's the difference between an integration
and nightly build?</a></li>
<li><a href="#q4">I would like to recompile eclipse on a platform that is not currently supported.
What is the best approach to this? What is the best way to ensure that the
community can use my work?</a></li>
<li><a href="#q5">How long does the build take to complete?</a></li>
<li><a href="#q6">When is the next build?</a></li>
<li><a href="#q7">I'm looking for an older build but can't find them on the download page?</a></li>
<li><a href="#q8">How do I run the performance tests from the zips provided on the download
page?</a></li>
<li><a href="#q9">What do I need to do to use org.eclipse.releng.basebuilder from HEAD now that the Xerces plugin has been removed?</a></li>
<li><a href="#q10">How do I update from 3.1 to 3.1.1 using update manager?</a></li>
<li><a href="#q11">Best releng practices from our Eclipsecon 2005 poster</a></li>
<li><a href="#q12">Useful reference documents</a></li>
</ol>
<ol start=1>
<li><a name="q1">What hardware comprises the platform-releng build infrastructure?</a>
<p>The eclipse platform build infrastructure consists of<br>
2 linux build machines (2GHz, 1GB and PowerMac G5, 2GB )<br>
2 junit test machines, one windows (2GHz, 1 GB) one linux (2.66
GHz, 1.2 GB )<br>
4 performance test machines - one set of slower machines (one windows, one
linux 2GHz, 512 MB) and one set of fast machines (one windows, one linux
3GHz, 2GB)
<br>
1 linux cvs test server
(500MHz, 500MB)<br>
1 database server with apache derby installed to store performance test
results (2.5GHz, 500MB)
</li><p></p><br>
<li><a name="q2">Is the Eclipse platform build process completely automated?</a></li><p></p>
Yes, the Eclipse
build process starts with a cron job on our main build machine that initiates
an shell
script that checks out the builder projects.<br>
org.eclipse.releng.eclipsebuilder -&gt; scripts to build each type
of drop
org.eclipse.releng.basebuilder -&gt; a subset of eclipse plugins
required to run the build.</li>
we also use several small cvs projects on an internal server that
store login credentials, publishing information and jdks
<p>Fetch, build and assemble scripts are generated automatically the org.eclipse.pde.build
plugin in org.eclipse.releng.basebuilder. Fetch scripts specify the version
of code to retreive from the repository. Build
scripts are also generated automatically to compile all
java code,
determine compile order and manage dependancies. Assembly scripts are
generated to assemble the compiled code into it's final form, tar.gz, zip
etc. We also
use custom build scripts that you can see in org.eclipse.releng.eclipsebuilder.</p>
<p>After the build drops are built, the automated junit and performance testing
begins. Tests occur over ssh for Linux machines, and rsh for Windows machines.
Each component team contributes it's own tests. Once the tests are completed,
the results are copied back to the build machine. Also, the images for the
performance tests are generated.</p><p></p>
<li><a name="q3">What's the difference between an integration
and nightly build?</a>
</p>
<p>With
integration builds, we specify a version of the plugin to retreive in the
map files. (org.eclipse.releng/maps). With nightly builds, we retrieve
the plugins specified in the map files from the HEAD stream. The types
of builds we run are described
<a href="http://download.eclipse.org/eclipse/downloads/build_types.html">here</a>.
</li><p></p>
<br>
<li><a name="q4">I would like to recompile eclipse on a platform that is not
currently supported. What is the best approach to this? What is the best
way to ensure that the
community can use my work? </a><p>The best approach is use the source build
drop and modify the scripts to support that you are interested in. Then
open
a <a href="https://bugs.eclipse.org">bug</a> with product <i>platform</i> and
component <i>releng</i> attaching the
the patches to the scripts that were required to build the new drop.</b><p></p>
</li>
<br>
<li><a name="q5">How long does the build take to complete?</a></li>
<p></p>
<p>It takes three hours for all the drops to be produced. Junit (five hours)
and performance tests (eight hours) run in parallel after the drops have been
built.
It takes a further
two hours for the performance results to be generated. We will reduce the amount
of time that the build takes in the 3.2 timeframe by implementing faster hardware
and more parallel ant tasks.
</p><br>
<p><li><a name="q6">When is the next build?</a></li><p>Please refer to the <a href="buildSchedule.html">build
schedule</a></p><br>
<li><a name="q7">I'm looking for an older build but can't find them on the download
page?</a><p></p>
Check out the <a href="http://archive.eclipse.org/eclipse/downloads">archive
site</a> for vintage builds.</li><p></p><br>
<li><a name="q8"/>How do I run the performance tests from the zips provided
on the download page?<p></p>
Check out <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=91229#c3">this
bug</a></li><br><p></p>
<li><a name=q9>What do I need to do to use org.eclipse.releng.basebuilder from
HEAD now that the Xerces plugin has been removed?</a></li><p>If you use
the org.eclipse.releng.basebuilder from HEAD in your builds and you use
TestVersionTracker to create a test.properties file (search for &quot;TestVersionTracker&quot; in
your customTargets.xml build scripts), please read on.</p>
<p>Some older versions of the TestVersionTracker class required xerces
on the classpath. On Monday, we will be removing the xerces jars from
the HEAD stream only of org.eclipse.releng.basebuilder.</p>
<p>For any team broken by this, a &lt;generateTestProperties&gt; custom
Ant task has been created which does the same. It is available in the
org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools plug-in
from HEAD. To use all you will need to do is the following replacement:</p>
<p>Replace text such as this (taken from GEF):</p>
<pre><blockquote><p>&lt;property name=&quot;build.compiler&quot; value=&quot;org.eclipse.jdt.core.JDTCompilerAdapter&quot;/&gt;<br>&lt;javac verbose=&quot;true&quot; failonerror=&quot;true&quot; srcdir=&quot;${builderDirectory}/tools&quot; destdir=&quot;${builderDirectory}/tools&quot;
classpath=&quot;${eclipse.home}/plugins/org.apache.xerces_4.0.13/xercesImpl.jar:${eclipse.home}/plugins/org.apache.xerces_4.0.13/xmlParserAPIs.jar&quot;/&gt;<br>&lt;java classname=&quot;TestVersionTracker&quot; &gt;
&lt;arg line=&quot;${workingDirectory}/eclipse/features/org.eclipse.gef.test_3.1.0/feature.xml
${buildDirectory} ${workingDirectory}/gef-testing/test.properties&quot; /&gt;
&lt;classpath&gt;</p><p>
&lt;pathelement path=&quot;${eclipse.home}/plugins/org.apache.xerces_4.0.13/xercesImpl.jar:${eclipse.home}/plugins/org.apache.xerces_4.0.13/xmlParserAPIs.jar:${builderDirectory}/tools&quot; /&gt;
&lt;/classpath&gt;<br>&lt;/java&gt;</p><p></blockquote></pre>with this:
</p>
<p><pre><blockquote><p>&lt;generateTestProperties
buildDirectory=&quot;${buildDirectory}&quot;
featureId=&quot;org.eclipse.sdk.tests&quot;
outputFile=&quot;${workingDirectory}/eclipse-testing/test.properties&quot;
/&gt;</p></blockquote></pre></p>
<li><a name="q10">How do I update from 3.1 to 3.1.1 using update manager?</a></li>
Refer to this <a href="http://www.eclipse.org/eclipse/platform-releng/updatesfor3.1.1.html">document</a>.<p>
<li><a name="q11">Best releng practices from
our Eclipsecon
2005 poster</a></li>
<p>1. Automate the build process from end-to-end and automate early.<br>
2. Use PDE Build in Eclipse to generate build scripts.<br>
3. Automate JUnit testing and performance monitoring.<br>
4. Automate build notifications (email)<br>
5. Use gentle humiliation to encourage developers to contribute carefully.
(Clown nose technique).<br>
6. Ensure stability in the build process by thorough testing of builder changes.<br>
7. Schedule builds at regular intervals and enforce rebuild policies.<br>
8. Use map files in a central cvs repository.<br>
9. Build on Linux.<br>
10. Have fun! </p>
<br>
<p>
<li><a name="q12">Useful reference documents</a><p>
<a href="http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/org.eclipse.releng.eclipsebuilder/readme.html?rev=HEAD&amp;content-type=text/html">Running
a build using the scripts in eclipsebuilder</a></p>
<a href="http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/org.eclipse.releng.basebuilder/readme.html?rev=HEAD&amp;content-type=text/html">Automating
builds using PDE Build</a><p>
<a href="http://eclipse.org/articles/Article-PDE-Automation/automation.html">Build
and Test Automation for plug-ins and features</a>
<p><a href="junit-contributing.html">Contributing JUnit Plug-in Tests</a></p>
<p><a href=" http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/org.eclipse.test.performance/doc/Performance%20Tests%20HowTo.html">Performance
Tests HowTo</a></p>
<p>
<a href="http://www.artima.com/lejava/articles/eclipse_culture.html">Eclipse's
culture of shipping</a><p><a href="http://eclipsecon.org/2005/presentations/econ2005-eclipse-way.pdf">The
Eclipse Way: Proccesses that Adapt</a>
</li><p></p>
</ol>
</body>
</html>