Working with Build Grid
Grid overview
The Build Grid can be managed by switching to Grid tab as shown below:
- Active nodes are connected and authorized nodes, and can be used to run build steps. When QuickBuild server is initially installed, the grid contains only one active node - the build server itself.
- Unauthorized nodes are connected nodes, but have not been authorized. Once authorized, they will appear as active nodes.
- Additional grid nodes can be added by installing build agents on other build machines. Installed agents are automatically authorized and will appear as active nodes.
- To remove nodes from the grid, just select nodes you want to remove, and click the unauthorize button.
Grid node attributes
Node attributes can be used to filter nodes for certain steps by specifying the step property node match condition . For example, the condition node.getAttribute("os.name").startsWith("Windows") matches only agents running Windows operating system, while condition node.hasAttribute("ant") matches agents that have the attribute ant defined.
There are two sets of attributes for a node: system defined attributes and user defined attributes. System defined attributes will be displayed if you select the System Attributes tab in node detail page.
System defined attributes include all environment variables and all Java system properties.
{#WorkingwithBuildGrid-defineuserattributes}User attributes are custom attributes that are defined by user to identify ability/environment of the node. For example, if the agent has Ant and Maven installed, you may define user attributes to reflect this installation as below:
Monitor grid node jobs
A single unit of work running on a grid node is called a grid job. In most cases, it is just a step. A grid node may have many jobs running concurrently (for example, steps from builds of different configurations). The number of concurrent jobs is limited by node resources (such as working threads). If the resources are exhausted, newly arriving jobs will be waiting in the queue. A typical job monitoring screen looks like this:
Partition grid between projects
The whole grid can be partitioned between different projects by assigning nodes in advanced setting of a configuration like below:
Assume the configuration in this example is root/myproj , all builds for root/myproj and its descendant configurations can only run on grid nodes with project attribute set to MyProj, regardless what value the node selection setting is set to when define steps. Eligible nodes for steps under this tree must match the node selection condition AND the node assignment condition in the same time. If multiple node assignment conditions are found along the tree, all these node assignment conditions need to be satisfied.