Reference Doc
IvyCruise is a set of plugins for CruiseControl.
You will find below the documentation reference of the different plugins.
If your are looking for the CruiseControl documentation reference, just go there.
If you want to see an example of how to use them, just follow this tutorial.
IvyBuilder is the plugin used to retrieve and order projects build according to the dependencies they have to each other.
You can define as many pattern elements as you want to point to projects that could be into different directories.
You can use the variable ${project} that matches each declared project into CruiseControl config file.
Note: with cc 2.3, using ${project} causes cc to fail, because project is not a defined property. A hack to use ivycruise with cc 2.3 is available here. With this version, you can use [project] instead of ${project}
Example :
You can define as many project elements as you want to point directly to other projects.
The project element is less flexible than the pattern as it points only to a specific project.
Example :
This task goal is to tell if the project must be rebuild or not regarding of the dependencies it owns, ie the project will be built if one of its dependencies has changed.
The ivyconditional task is a meta publisher.
It publishes the result using the sub publishers only if build has failed or if real modifications occured, not only dependency ones (to use in conjunction with IvyBuildStatus or BuildStatus). This publisher is usually used with email publishers, to prevent spam when only dependency has changed.
Example:
You will find below the documentation reference of the different plugins.
If your are looking for the CruiseControl documentation reference, just go there.
If you want to see an example of how to use them, just follow this tutorial.
Prerequesites
The IvyCruise plugins set requires two particular configurations :- ivy.jar and ivycruise.jar in the CruiseControl classpath. (see it here)
- a multithreaded CruiseControl server configuration (can run without but in a degraded but functionnal mode).
<ivybuilder>
<cruisecontrol> <project> <schedule> <ivybuilder>
Attributes
Attribute | Required | Description |
---|---|---|
ivyfilepattern | No | Pattern to access to other projects'ivy file.You can use the variable ${project} that matches each declared project into CruiseControl config file. Example: ivyfilepattern="projects/${project}/ivy.xml where ${project} is a CruiseControl project name. Note: with cc 2.3, using ${project} causes cc to fail, because project is not a defined property. A hack to use ivycruise with cc 2.3 is available here. With this version, you can use [project] instead of ${project} |
Child Elements
Element | Cardinality | Description |
---|---|---|
<pattern> | 0..* | Defines some pattern child elements to retrieve other projects. |
<project> | 0..* | Give the complete description of a project to use : name and ivyfile. |
<pattern>
<cruisecontrol> <project> <schedule> <ivybuilder> <pattern>
Note: with cc 2.3, using ${project} causes cc to fail, because project is not a defined property. A hack to use ivycruise with cc 2.3 is available here. With this version, you can use [project] instead of ${project}
Attributes
Attribute | Required | Description |
---|---|---|
value | Yes | pattern to access to other projects'ivy file. Example: ivyfilepattern="projects/${project}/ivy.xml where ${project} is a CruiseControl project name. |
<ivybuilder>
<pattern value="projects/apps/${project}/ivy.xml" />
<pattern value="projects/components/${project}/ivy.xml" />
<pattern value="projects/tools/${project}/ivy.xml" />
<pattern value="projects/misc/${project}/ivy.xml" />
</ivybuilder>
<pattern value="projects/apps/${project}/ivy.xml" />
<pattern value="projects/components/${project}/ivy.xml" />
<pattern value="projects/tools/${project}/ivy.xml" />
<pattern value="projects/misc/${project}/ivy.xml" />
</ivybuilder>
<project>
<cruisecontrol> <project> <schedule> <ivybuilder> <project>
Attributes
Attribute | Required | Description |
---|---|---|
name | Yes | CruiseControl name of the project |
ivyfile | Yes | path to project ivy file |
<ivybuilder>
<project name="A" ivyfile="checkout/A/ivy.xml" />
<project name="B" ivyfile="checkout/B/ivy.xml" />
<project name="C" ivyfile="checkout/C/ivy.xml" />
</ivybuilder>
<project name="A" ivyfile="checkout/A/ivy.xml" />
<project name="B" ivyfile="checkout/B/ivy.xml" />
<project name="C" ivyfile="checkout/C/ivy.xml" />
</ivybuilder>
<ivybuildstatus>
<cruisecontrol> <project> <modificationset> <ivybuildstatus>
Attributes
Attribute | Required | Description |
---|---|---|
ivyfile | Yes | the path to the ivy file of the project. |
<ivyconditional>
<cruisecontrol> <project> <publishers> <ivyconditional>
It publishes the result using the sub publishers only if build has failed or if real modifications occured, not only dependency ones (to use in conjunction with IvyBuildStatus or BuildStatus). This publisher is usually used with email publishers, to prevent spam when only dependency has changed.
Example:
<publishers>
<ivyconditional>
<email mailhost="127.0.0.1" buildresultsurl="http://127.0.0.1:8080/cruisecontrol/buildresults/myproject/" returnaddress="someone@mysite.com">
</email>
</ivyconditional>
</publishers>
<ivyconditional>
<email mailhost="127.0.0.1" buildresultsurl="http://127.0.0.1:8080/cruisecontrol/buildresults/myproject/" returnaddress="someone@mysite.com">
</email>
</ivyconditional>
</publishers>
Child Elements
Element | Cardinality | Description |
---|---|---|
<antpublisher> |
0 .. * | Executes an Ant script which implements a custom publisher. |
<artifactspublisher> |
0 .. * | Copies build products to a directory |
<currentbuildstatuspublisher> |
0 .. * | Writes the time of the next build to a file |
<email> |
0 .. * | Sends an email with a URL to the build results JSP |
<execute> |
0 .. * | Execute a command as part of the publishing phase |
<ftppublisher> |
0 .. * | Copies the log file and build artifacts to an FTP server |
<htmlemail> |
0 .. * | Sends an email with the build results embedded as HTML |
<jabber> |
0 .. * | Sends an instant message with a link to the build results via a Jabber server using XMPP |
<sametimeannouncement> |
0 .. * | Sends Sametime announcements with the result of the build |
<scp> |
0 .. * | Copies a file using SCP |
<x10> |
0 .. * | Controls an x10 electronic device |
<xsltlogpublisher> |
0 .. * | Performs a transformation of the log file |
RMI configuration
If you're not using the default rmi port (1099), be sure to indicate so in your plugin declaration like so:
<plugin name="ivybuilder" classname="fr.jayasoft.ivy.cruise.IvyBuilder"
rmiPort="4999"/>