This PlugIn integrates [Eclipse
Buckminster](http://www.eclipse.org/buckminster "Eclipse Buckminster")
as a new build step into Jenkins.  

# Usage

To use buckminster you need to configure at least one Buckminster
installation. This is done in the Jenkins configuration. The easiest way
to do this, is to use the 'Install automatically' feature. Enter a name
for the Buckminster installation, select a version from the dropdown box
and buckminster will be installed as needed when you run a buckminster
build step. The installed buckminster will contain every feature from
the respective headless update-site on eclipse.org as well as the
'subclipse' feature from cloudsmith.com.

If you activate the 'update automatically' checkbox, a check for updates
will be performed before a build gets executed. If features have been
updated or new features get available, they will automatically
provisioned into the buckminster installation.  
 
![](docs/images/buckminster-installation.png)  
If you have extended buckminster, simply want another feature
configuration, or download from other repositories, you can customize
the installation. Currently there is the following options available:

1.  Deactivate 'Install automatically' and enter the home path to an
    existing buckminster installation (usually a buckminster folder that
    contains a plugins/ and a features/ directory)
2.  Execute a shell script to fetch and configure buckminster
3.  Extract a preconfigred buckminster from an archive
4.  place a 'buckminster.json' file under
    JENKINS\_HOME/userContent/buckminster to override the default
    installer configuration. The file must list all available
    buckminster versions, the URL to the p2 director application, the IU
    of the product to be provisioned as well as the p2 repositories and
    the features to install from these repositories. The file structure
    is defined as following:
         {"buckminsters":[
                {"id":"3.5",
                  "name":"Buckminster 3.5",
                  "url":"http://example.org/p2_director.zip",
                  "iu":"org.eclipse.buckminster.cmdline.product",
                  "repositoryURL":"http://example.org/p2Repository",
                  "repositories":[
                        {
                            "url":"http://example.org/p2Repository",
                            "features":[
                                {"id"="feature.one"},
                                {"id"="feature.two"}
                           ]
                       }
                  ]
              }
           ]
        }

    Once the instance is configured it can be used as a build step  
       
    ![](docs/images/Bildschirmfoto-4.png)

Those screenshot show the setup for the Buckminster [Hello XML World
Example](http://wiki.eclipse.org/Hello_XML_World_Example_(Buckminster) "Hello XML World Example").
Running it will produce the following result:  
   
![](docs/images/Bildschirmfoto-2.png)

## Target Platform Publisher (Experimental)

The Target Platform Publisher can be used to share a definition of an
eclipse target platform between different projects that build eclipse
plugins with buckminster. To make use of these capabilities you need to
create a new job that creates a target platform first. This can be done
for example with one or more MSPECs (detailed information on when and
how to use MSPECs can be found in the [Buckminster
Book](http://www.eclipse.org/downloads/download.php?file=/tools/buckminster/doc/BuckyBook.pdf)),
or simply by downloading/copying an update-site or eclipse package to
the workspace.  
![](docs/images/TP-config.png)  
 Once the build is set for the target platform, you need to publish the
created artifact. To do so, activate the Target Platform Publisher,
enter the directory where your target platform can be found and give the
artifact a name.  
![](docs/images/ArchiveTP.png)  
This will archive the target platform produced by the build and makes it
available to other projects under the name 'MailApp Target Platform'.
All other jobs that have a Buckminster build step may now choose from
all published Target Platforms in the build-step configuration.

![](docs/images/UseTP.png)

This will also introduce the project that creates the target platform as
an upstream project of the job that depends on the target platform:

!UpstreamProject.png! 

# Remarks

  

-   If a *perform* command is executed, the PlugIn sets the property
    buckminster.output.root to *JOB\_WORKSPACE/buckminster.output* to
    make all artifacts appear in the actual job workspace.
-   The working and data directory of buckminster is set to the
    directory of the job workspace. This is especially useful if you
    want your code to be checked out with Jenkins and only do a local
    resolution of the already checked-out source code from within
    buckminster.  

# Known Limitations

-   So far the Buckminster PlugIn works only for freestyle and matrix
    projects.
-   When using the Target Platform Publisher you need to make sure that
    the job that's exporting the Target Platform runs on the same node
    as the jobs that make use of it.

# Changelog

### Version 1.1.1 (17.02.2013)

-   fixed
    [JENKINS-13218](https://issues.jenkins-ci.org/browse/JENKINS-13218 "JENKINS-13218") -
    Can't add build step on current Jenkins
-   fixed
    [JENKINS-10089](https://issues.jenkins-ci.org/browse/JENKINS-10089 "JENKINS-10089") -
    Recent versions of Buckminster (3.7 and 4.2) can now be installed in
    Jenkins configuration
-   help contents is visible when Jenkins is installed on Tomcat

### Version 1.0.8 (15.01.2011)

-   fixed
    [JENKINS-8186](http://issues.jenkins-ci.org/browse/JENKINS-8186 "JENKINS-8186") -
    Version Property not available in Buckminster Plugin  1.0.5
-   fixed
    [JENKINS-8459](http://issues.jenkins-ci.org/browse/JENKINS-8459 "JENKINS-8459") -
    Add way of passing arbitrary options to the equinox launchers

### Version 1.0.4 (09.10.2010)

-   fixed
    [JENKINS-7118](http://issues.jenkins-ci.org/browse/JENKINS-7118) -
    Add a field where the path to a global property file can be
    specified
-   fixed
    [JENKINS-7037](http://issues.jenkins-ci.org/browse/JENKINS-7037) -
    Check if Buckmister\_3.x/directory is available
-   fixed
    [JENKINS-7672](http://issues.jenkins-ci.org/browse/JENKINS-7672) -
    Missing help text for "Path to Target Platform"

### Version 1.0.3 (11.05.2010)

-   Fixed
    [JENKINS-6488](http://issues.jenkins-ci.org/browse/JENKINS-6488)
    (Buckminster doesn't inherit environment variables)

### Version 1.0.2 (06.04.2010)

-   Fix for Buckminster invocation (see
    [Bug\#287575](https://bugs.eclipse.org/bugs/show_bug.cgi?id=287575)
    for details)

### Version 1.0.1 (02.04.2010)

-   Several fixes for Distributed Builds and Windows Nodes
-   Fixed a NullPointerException during Form validation

### Version 1.0.0 (27.03.2010)

-   Distributed Builds (Master/Slave) are now supported
-   Buckminster Installations can now be updated automatically every
    time you run a build. See
    [JENKINS-6065](http://issues.jenkins-ci.org/browse/JENKINS-6065) for
    details.

### Version 0.9.5 (24.03.2010)

-   it's now possible to configure the buckminster workspace,
    buckminster.temp.root and buckminster.output.root
    [JENKINS-6040](http://issues.jenkins-ci.org/browse/JENKINS-6040)
-   Instead of entering commands in the text area you can now also
    specify a script file in the workspace
    [JENKINS-6038](http://issues.jenkins-ci.org/browse/JENKINS-6038)
-   fixed
    [JENKINS-6039](http://issues.jenkins-ci.org/browse/JENKINS-6039) 
-   fixed
    [JENKINS-5971](http://issues.jenkins-ci.org/browse/JENKINS-5971)

### Version 0.9.4 (22.03.2010)

-   Support for automatic Tool installation from
    Eclipse.org/Cloudsmith.com
-   Support for automatic Tool installation from custom sources or
    custom feature configurations

### Version 0.9.3 (10.12.2009)

-   fixed
    [JENKINS-5004](http://issues.jenkins-ci.org/browse/JENKINS-5004) -
    Plugin relies on 'java' being in the system path

### Version 0.9.2 (25.11.2009)

-   fixed
    [JENKINS-4947](http://issues.jenkins-ci.org/browse/JENKINS-4947) -
    WORKSPACE variable not working on windows systems

### Version 0.9.1 (06.08.2009)

-   fixed [Issue
    4171](https://hudson.dev.java.net/issues/show_bug.cgi?id=4171) -
    Target Platform Publisher fails for Matrix Projects

### Version 0.9 (03.08.2009)

-   added a target platform publisher (experimental)
-   canceling builds should now work properly 

### Version 0.8.4 (23.07.2009)

-   Set buckminster.temp.root to $workspace/buckminster.temp
-   Property expansion for additional properties of each eclipse
    installation (hudson configuration)

### Version 0.8.3 (17.07.2009)

-   Support for Matrix Jobs (thanks to Carsten Reckord)

### Version 0.7.1 (11.07.2009)

-   The build step configuration contains a new advanced section to add
    additional JVM parameters
-   Ant-style property expansion works now in commands and JVM
    parameters (Hudson environment variables can be used that way)

### Version 0.6 (19.06.2009)

Initial release