Available: | Bamboo 2.7 and later |
Additional Build Configuration Module allows developers to register additional configuration UI on the Miscellaneous tab of the Configuration of a Job or Plan.
The root element for the Additional Build Configuration module is additionalBuildConfigurationPlugin. It allows the following attributes and child elements for configuration:
Name | Description |
---|---|
class | The class which implements this plugin module. The class you need to provide depends on the module type. For example, Confluence theme, layout and colour-scheme modules can use classes already provided in Confluence. So you can write a theme-plugin without any Java code. But for macro and listener modules you need to write your own implementing class and include it in your plugin. See the plugin framework guide to creating plugin module instances. Required: yes Default: - |
key | The unique identifier of the plugin module. You refer to this key to use the resource from other contexts in your plugin, such as from the plugin Java code or JavaScript resources.
In the example, Required: yes Default: N/A |
name | The human-readable name of the plugin module. Only used in the plugin's administrative user interface. Required: - Default: - |
The table summarises the elements. The sections below contain further information.
Name | Description |
---|---|
description | The description of the plugin module. The 'key' attribute can be specified to declare a localisation key for the value instead of text in the element body. Use this element to describe the section. Required: - Default: - |
resource | Using the "edit" and "view" attributes it is possible to provide a custom template for editing and viewing your custom plugin configuration Required: yes Default: - |
Additional Build Configuration modules must implement the MiscellaneousBuildConfigurationPlugin interface and extend BaseBuildConfigurationAwarePlugin.
Here is an example atlassian-plugin.xml
file containing a Post Chain Index Writer Action module:
1 2<atlassian-plugin name="Hello World" key="example.plugin.helloworld"> <plugin-info> <description>A Additional Build Configuration Module module type test</description> <vendor name="Atlassian Software Systems" url="http://www.atlassian.com"/> <version>1.0</version> </plugin-info> <additionalBuildConfigurationPlugin key="concurrentBuild" name="Concurrent Build Configuration" class="com.atlassian.bamboo.build.configuration.ConcurrentBuildsPlanConfigurationPlugin"> <description>Plugin to configure maximum number of concurrent builds for a plan</description> <resource type="freemarker" name="edit" location="build/concurrent/editConcurrentBuildsConfigForPlan.ftl"/> <resource type="freemarker" name="view" location="build/concurrent/viewConcurrentBuildsConfigForPlan.ftl"/> </additionalBuildConfigurationPlugin> </atlassian-plugin>
Example "edit" template:
1 2[@ui.bambooSection titleKey="build.concurrent.title"] [@ww.checkbox labelKey='build.concurrent.overrideDefault' name='custom.concurrentBuilds.overrideNumberOfConcurrentBuilds' toggle='true' /] [@ui.bambooSection dependsOn='custom.concurrentBuilds.overrideNumberOfConcurrentBuilds' showOn='true'] [@ww.textfield labelKey='build.concurrent.maxnumber' name='custom.concurrentBuilds.numberOfConcurrentBuilds' /] [/@ui.bambooSection] [/@ui.bambooSection]
Example "view" template:
1 2[#if action.concurrentBuildsEnabled && planLevelConcurrentBuildConfig.defaultOverridden] [#assign labelValue]${planLevelConcurrentBuildConfig.effectiveNumberOfConcurrentBuilds}[#if !planLevelConcurrentBuildConfig.defaultOverridden] (${action.getText('global.default.used')})[/#if][/#assign] [@ww.label labelKey='build.concurrent.maxnumber' value='${labelValue}' /] [/#if]
By overriding isApplicableTo it is possible to control the conditions on which the configuration UI is shown. One typical implementation is to check and only display on a plans type.
To display on all TopLevelPlan's (Chains and Builds):
1 2public boolean isApplicableTo(@NotNull Plan plan) { return plan instanceof TopLevelPlan; }
To display only on Jobs:
1 2public boolean isApplicableTo(@NotNull Plan plan) { return plan instanceof Job; }
Rate this page: