Buckminster Galileo Builder
The Buckminster Galileo Builder was created to enable a fast but still very accurate build of the Galileo release train. It's provided as a single feature to be installed either into an IDE or into some headless environment. The builder is intended to be used on any computer, not just on the build server at Eclipse.org.
The build will perform the following steps:
- Generate a full build model from the all contributions.
- Create a composite repositories that includes all contributed repositories.
- Create a special category repository that includes categories declared in the model.
- Create a feature that includes all contributed features and bundles.
- Verify that the feature can be installed into all configurations declared in the model.
- Create a mirror that includes everything. The mirroring is selective and will only bring in the transitive closure of all contributions. No categories are copied from the contributions. This last step is optional.
Steps 1-5 usually completes within 3-6 minutes on my machine (located in Sweden). The time is very much dependent on bandwidth and the current mode of download.eclipse.org. These steps will probably reveal about 95% of the problems. During the mirroring in step 6, it's verified that all artifacts exists and that packed files can be unpacked.
The builder should make a fairly good job of determining where to send emails when things go wrong. So far, this functionality has been tested using mock emails only. I think we should continue in that vein until everything is found to be working properly and the builder can be used in production. I.e. do not pass the -production flag to the builder unless you really know what you're doing.
How to get started
- Start an Eclipse 3.5 installation, I20090407-1430 or newer. If you don't have one available, download from here http://download.eclipse.org/eclipse/downloads/
- Use the P2 update manager and add the update site http://download.eclipse.org/tools/buckminster/tools-3.5/
- Install the Galileo Builder feature found under the Buckminster Tools category
- Check out the project org.eclipse.galileo.build from the CVS repository at :pserver:email@example.com:/cvsroot/callisto. This is the project that contains all the contributions.
Running the build
From the command lineJust type:
eclipse -nosplash -application org.eclipse.buckminster.galileo.build.app <options>
From within the IDE
Create a Launch Configuration of type Eclipse Application, check Run an application, select org.eclipse.buckminster.galileo.build.app, go to the Arguments tab and enter the options, then click Run (or Debug).Hint: If you want to point to the contributions you have checked out into your workspace, use:
Command line options
|-buildModel||<path to file>||This value is required||An absolute path to the galileo.build file (the one found adjacent to all contributions in the org.eclipse.galileo.build project)|
|-verifyOnly||N/A||N/A||Only verify all meta-data. Do not create a mirror|
|-updateOnly||N/A||N/A||Reuse the results of the previous run, i.e. update metadata and, if applicable, the mirror|
|-production||N/A||N/A||Enable sending of emails to proper addresses. Only mock emails can be sent unless this option is in effect (see -mockEmailTo and -mockEmailCC).|
|-logLevel||ERROR, WARNING, INFO, or DEBUG||INFO||Control the verbosity of the trace output. Using DEBUG forces the logger to print out stack-traces for logged exceptions.|
|-buildRoot||<path to folder>||The buildRoot declared in the build model||A path denoting the folder where all generated artifacts will end up. This setting overrides the attribute with the same name in the build model.|
|-buildId||<build id>||build-<timestamp in the format yyyyMMddHHmm>||The ID of the current build.|
|-targetPlatformRepository||<URL>||The repository of the EP contribution||A pointer to the repository that contains the target platform. Typically the last milestone or an I-Build. The URL should point to a repository folder. A typical examle: http://download.eclipse.org/eclipse/updates/3.5milestones/S-3.5M6-200903130100/. This option should only be used if the EP contribution lacks repository.|
|-emailFrom||<email address>||Address of build master||The email address to use in as the sender of emails.|
|-emailFromName||<name>||The name of the build master||The name to associate with the senders email address|
|-subjectPrefix||<string>||The label for the build||A prefix for the email subject. Will be placed within brackets.|
|-smtpHost||<host name>||localhost||The name of the SMTP host, something like mail.example.com.|
|-smtpPort||<port number>||25||The port that the SMTP host will listen to.|
|-smtpUser||<user name>||Connect without authentication||The user name to use if the SMTP requires authentication.|
|-smtpPassword||<user name>||Connect without authentication||The password to use if the SMTP requires authentication. Defaults to not using authentication|
|-mockEmailTo||<email address>||Use contact addresses provided with the contributions|| An email address that will be used instead of the addresses listed with the contributions. Useful when testing the email sending function.
NOTE: The log will indicate the real address, not the mock address, but no email is sent to the real address.
|-mockEmailCC||<email address>||Use the build masters address||An email address that will be used instead of the declared build-masters address. Useful when testing the email sending function.|
Source for the Builder
The simplest way to look at the source is to install the Source bundles for Galileo Builder feature. Once that is installed, you can simply Import the org.eclipse.buckminster.galileo.builder into your project:
- Click Import... to start the Import wizard
- Choose Plug-in Development -> Plug-ins and Fragments
- Click Next
- Check Projects with source folders
- Click Next
- Select the org.eclipse.buckminster.galileo.builder project and click Add
- Click Finish
You can of course obtain the source from our SVN repository too. It can be found at:
An way to check-out the source and import everything needed to compile it is to use Buckminster and run this CQUERY: