| <!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> </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 -> scripts to build each type |
| of drop |
| org.eclipse.releng.basebuilder -> 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 "TestVersionTracker" 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 <generateTestProperties> 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><property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/><br><javac verbose="true" failonerror="true" srcdir="${builderDirectory}/tools" destdir="${builderDirectory}/tools" |
| classpath="${eclipse.home}/plugins/org.apache.xerces_4.0.13/xercesImpl.jar:${eclipse.home}/plugins/org.apache.xerces_4.0.13/xmlParserAPIs.jar"/><br><java classname="TestVersionTracker" > |
| <arg line="${workingDirectory}/eclipse/features/org.eclipse.gef.test_3.1.0/feature.xml |
| ${buildDirectory} ${workingDirectory}/gef-testing/test.properties" /> |
| <classpath></p><p> |
| <pathelement path="${eclipse.home}/plugins/org.apache.xerces_4.0.13/xercesImpl.jar:${eclipse.home}/plugins/org.apache.xerces_4.0.13/xmlParserAPIs.jar:${builderDirectory}/tools" /> |
| </classpath><br></java></p><p></blockquote></pre>with this: |
| </p> |
| <p><pre><blockquote><p><generateTestProperties |
| buildDirectory="${buildDirectory}" |
| featureId="org.eclipse.sdk.tests" |
| outputFile="${workingDirectory}/eclipse-testing/test.properties" |
| /></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&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&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> |