This page describes how to configure the capability requirements for a Job.A requirement is specified in a Job or a Task. It defines the capabilities which are required by an agent to build that Job. A Job inherits all of the requirements specified in its Tasks.
Together, capabilities and requirements control which agents can execute builds for particular Jobs. Each Job can only be built by agents whose capabilities meet the Job's requirements.
There are four types of capabilities in Bamboo:
- Executable capability — Every Task has one 'Executable' capability requirement. A Job inherits the 'Executable' capability requirements of its Tasks.
- JDK capability — A Task has either one 'JDK' capability requirement or none, depending on the Task's 'Executable'. A Job inherits the 'JDK' capability requirements of its Tasks.
- Custom capability — A Job can have multiple 'custom' capability requirements (or none). Before you can specify a custom capability in your Job, you must first define the custom capabilities in your Bamboo system (see Configuring a new Custom Capability). Custom capabilities can be used to control which Jobs will be built by a particular agent. For example, if the builds for a particular Job should only run in a Windows environment, you could create a custom capability '
operating.system=WindowsXP' for the appropriate agent(s), and specify it as a requirement for this Job.
- Perforce capability — A Job will have a 'Perforce' capability requirement automatically specified, if Perforce was selected as the source repository.
Screenshot above: Editing a Job's Requirements
Specifying Extra Requirements for a Job
A Job's will inherit the requirements of its Tasks by default. However, you can specify extra requirements for the Job, in addition to the Task requirements.
To specify extra requirements for a Job:
- Navigate to the desired Job's configuration pages, as described on Editing a Job.
- Click the 'Requirements' tab to display the Job's Requirements settings (see screenshot above). This page shows a list of all the Job's current requirements and the number of 'Matching Agents' and 'Matching Elastic Images' (i.e. agents/elastic images which meet the Job's requirements and can run a build for this Job). See Viewing Current Capable Agents below for more information.
- If you had previously set up the capability (executable, JDK, custom), you can select it from the 'Requirement' dropdown in the 'Add Extra Requirement' section. If you are setting up a new custom requirement, select 'New custom requirement' instead.
- Fill out the fields for the requirement:
- 'Key' (new custom requirement only) — enter the key of the new capability.
- Select the condition for the requirement from the dropdown:
- 'exists' — this Job can be built by any agent that has the capability with the same Key.
- 'equals' — this will display a text field for you to enter an exact value. This Job can be built by any agent that has the capability with the same Key and value.
- 'matches' — this will display a text field for you to enter a regular expression (for more information about regular expressions, please visit http://download.oracle.com/javase/1.4.2/docs/api/java/util/regex/Pattern.html#sum). This Job can be built by any agent that has a capability with the same Key, and the value matches this regular expression.
- Click the 'Add' button to add your new custom capability to the Job's list of requirements. The list of 'Matching Agents' and 'Matching Elastic Images' displayed will be updated, as the plan can now only be built by agents which have a capability that meets the new custom requirement you have specified.
Viewing Current Capable Agents
From a Job's Requirements page (above), you can view which agents and elastic images are currently capable of building the Job.
To view details about agents/elastic images that are currently capable of building your Job:
- On the Job's Requirements page (described above), click the name of the requirement in the table (e.g. 'Maven 2').
- The summary page for the capability will be displayed, showing the Agents and Elastic Images that have the capability. See Viewing a Capability's Agents and Jobs for more information.