GBuild
Added by David Blevins, last edited by David Blevins on Jan 07, 2006  (view change)
Labels: 
(None)


The GBuild Agents collectively use the following JMS Topics and Queues. All the names are configurable if you wished to use the same components several times on the same broker with slightly different purposes, this could be configured in the application.xml file of the Agent.

The BUILD.TASKS queue

This is the primary queue that all the build agents pull from. Each message sent to this queue is a javax.jms.ObjectMessage holding a serialized HashMap instance. This HashMap contains the following entries. The keys in this map are also referred to as headers.

store an instance of ContinuumStore that basically just holds the Project and BuildDefinition instances needed to run the build
project.name a string representing the name of the project. I've typically been using the maven artifactId as the project.name
project.version the version of the project
projectId a java.lang.Integer which is the id of the project as it is in the ContinuumStore
project-id an alias for projectId
project.id an alias for projectId (i like the dots)
build.name a simple java.lang.String token (i.e. no spaces all filename safe characters) which will be a unique name for the build definition
buildDefinitionId a java.lang.Integer which is the id of the BuildDefinition in the ContinuumStore
build-definition-id alias for buildDefinitionId
build-id the java.lang.Integer that should be used as the BuildResult id, currently just set to the buildDefinitionId cause we don't yet track the builds aggressively
build.id same as build-id
include.<foo> special headers used by the [FileIncludeExtension] to read any file from the project and include it's contents as a string in the result message. Any number of these headers can be added.
header.<foo> Just a generic bucket used for adding any kind of metadata to the message. The header will be found by the HeaderIncludeExtension and copied as is to the result message. Useful for when the agent producing the build and placing it on the queue wants some data about the build sent back to it when with the results. This could perhaps be a session id or some other info that helps the build producer aggregate or track results.

The BUILD.RESULTS topic

The results from a build agent that pulled work from the BUILD.TASKS queue are sent to this topic. This is the rally-point for all the agents in the network. Agents "listening" on the BUILD.RESULTS topic can process things in any number of ways, including to writing data to a database, doing analysis of failures and performance over a period of time, specific kinds of reporting, etc.

Each message sent to this topic is a javax.jms.ObjectMessage holding a serialized HashMap instance. This HashMap contains the following entries. The keys in this map are also referred to as headers.

store an instance of ContinuumStore that basically just holds the Project and BuildDefinition instances needed to run the build
project.name a string representing the name of the project. I've typically been using the maven artifactId as the project.name
project.version the version of the project
projectId a java.lang.Integer which is the id of the project as it is in the ContinuumStore
project-id an alias for projectId
project.id an alias for projectId (i like the dots)
build.name a simple java.lang.String token (i.e. no spaces all filename safe characters) which will be a unique name for the build definition
buildDefinitionId a java.lang.Integer which is the id of the BuildDefinition in the ContinuumStore
build-definition-id alias for buildDefinitionId
build-id the java.lang.Integer that should be used as the BuildResult id, currently just set to the buildDefinitionId cause we don't yet track the builds aggressively
build.id same as build-id
os.name The Operating System name from System.getProperties
os.name The Operating System version from System.getProperties
java.vendor The Java Vendor name from System.getProperties
java.version The Java Version number from System.getProperties
host-name The host name of the agent as reported by InetAddress.getLocalHost()
host-address The host address of the agent as reported by InetAddress.getLocalHost()
contributor The organization name of the company or person hosting the agent. Configured in the application.xml
admin-address The the admin to contact with any questions or issues regarding the agent. Configured in the application.xml
build.output-file.gz The console output from the build task ran by the build agent. The content is an array of GZipped bytes.
include.<foo> The contents of any files added by the [FileIncludeExtension]. These will be written to disk by the [WriteIncludeFileExtension] BuildResultsExtention.
header.<foo> Any headers included in the original build task message that were echoed back by the HeaderIncludeExtension

The BUILD.ACTIVITY topic

The build activity topic is more or less a way for Agents to do logging in the GBuild network. Each message sent to this topic is a javax.jms.ObjectMessage holding a serialized HashMap instance.

notification A string with some logging-oriented information sent by an Agent in the GBuild Network
os.name The Operating System name from System.getProperties
os.name The Operating System version from System.getProperties
java.vendor The Java Vendor name from System.getProperties
java.version The Java Version number from System.getProperties
host-name The host name of the agent as reported by InetAddress.getLocalHost()
host-address The host address of the agent as reported by InetAddress.getLocalHost()

The BUILD.PING topic

This topic is used by Agents to send "ping" messages of type javax.jms.TestMessages containing the string value of System.currentTimeMillis().

The ping messages serve a few purposes

  • It helps to keep the connection alive on networks that automatically close connections it sees as inactive.
  • It allows one to easily see which agents are active in the build network.

The BUILD.NOTIFICATIONS topic

Ok, so this one hasn't been created yet, but it will be the future topic used to support Continuum Notifications (IRC, EMAIL, etc.) on continuum defined build events. Have any spare time to write it?

Site running on a free Atlassian Confluence Open Source Project License granted to OSS. Evaluate Confluence today.
Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.5 Build:#811 Jul 25, 2007) - Bug/feature request - Contact Administrators