Please keep in mind that customisations are beyond the scope of what's covered by Atlassian Support.
A Bamboo plugin is a single JAR containing code, a plugin descriptor (XML) and usually some Freemarker template files to render HTML.
The plugin descriptor is the only mandatory part of the plugin. It must be called atlassian-plugin.xml and be located in the root of your JAR file.
Each plugin consists of one or more plugin modules. These are of different types (for example a report, or a post-build action) and each has an individual XML element describing it. Each module is described below together with the XML element required for it.
Here is a sample of the descriptor with highlighted elements:
1 2<!-- the plugin key must be unique, think of it as the 'package' of the plugin --> <atlassian-plugin key="com.atlassian.plugin.sample" name="Sample Plugin" plugins-version="2"> <!-- a short block describing the plugin itself --> <plugin-info> <description>This is a brief textual description of the plugin</description> <!-- the version of the plugin --> <version>1.1</version> <!-- details of the plugin vendor --> <vendor name="Atlassian Software Systems Pty Ltd" url="https://www.atlassian.com"/> </plugin-info> . . . 1 or more plugin modules . . . </atlassian-plugin>
Each plugin has a plugin key which is unique among all plugins (eg "com.atlassian.plugin.sample"). Semantically this equates to the package of a Java class. Each module within the plugin also has a module key which is unique within the plugin (eg "myreport"). Semantically this equates to the class name of a Java class.
The plugin key + module key are combined to make the complete key of the plugin module (combining the examples above, the complete key would be "com.atlassian.plugin.sample:myreport"). Note: a ":" is used to separate the plugin key from the module key.
The following types of plugin modules are supported by Bamboo:
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
buildAgentRequirementFilter | 2.2 | Build Agent Requirement Filter Module | Customises the list of Agents a plan can be built on. |
buildCompleteAction | 1.0 | Build Complete Action Module | Add a custom asynchronous action after the build process has completed. |
buildDefinitionTransformer | 3.3 | ||
buildProcessor | 1.0 | Build Processor Module | Append a custom synchronous process to the build. Occurs on the Agent (both local and remote) after the builder has run. |
buildProcessorServer | 2.0 | Build Processor Server Module | Append a custom synchronous process to the build. Occurs on the server after the build has been returned by the Agent. |
buildTriggerCondition | 5.14 | Define condition for trigger execution. | |
planDeletionInterceptorAction | 2.7 | Plan Deletion Interceptor Action Module | Allows execution of additional actions before plan removal. |
planTrigger | 3.2 | ||
preBuildQueuedAction | 2.1 | Pre-Build Queued Action | Prepends a custom synchronous process to the build. Occurs before a build is queued. |
preBuildAction | 1.1 | Pre-Build Action Module | Prepends a custom synchronous process to the build. Occurs before the builder has run. |
preDeploymentAction | 6.4 | Prepends a custom synchronous process to the environment deployment. Occurs before the builder has run. | |
postBuildCompletedAction | 2.6 | Post-Build Completed Action Module | Add a custom asynchronous `build context`-aware action after the build process has completed and the build results have been saved. |
preChainAction | 2.7 | Pre-Chain Action Module | Prepends a custom synchronous process before the chain starts executing. |
postChainAction | 2.7 | Post-Chain Action Module | Prepends a custom synchronous process after the chain finishes executing. |
preStageAction | 2.7 | Pre-Stage Action Module | Prepends a custom synchronous process before the stage starts executing. |
postStageAction | 2.7 | Post-Stage Action Module | Prepends a custom synchronous process after the stage finishes executing. |
preDeploymentQueuedAction* | 7.2 | Prepends a custom synchronous process before the environment added to queue. | |
preJobAction | 2.7 | Pre-Job Action Module | Prepends a custom synchronous process before the job starts executing. |
prePostTaskActions | 5.8 | ||
postJobAction | 2.7 | Post-Job Action Module | Prepends a custom synchronous process after the job finishes executing. |
restartFailedStageAction | 3.2 | ||
resumeManualStageAction | 3.2 | ||
repository | 1.1 | Source Repository Module | Define a custom source repository. |
stopOnManualStageAction | 3.2 | Action which is executed if build stopped at manual stage. | |
taskProcessCommandDecorator | 3.1 | Allows to add custom logic during execution of existing Task. | |
taskCondition | 6.6 | Define Task condition. | |
taskType | 3.1 | Task Plugin Module | Define Task for job or environment. |
triggerReason | 2.0 | Trigger Reason Module | Define trigger reason. |
triggerType | 5.0 | Define build or environment trigger. | |
vcsType | 5.14 | Define a custom source repository. |
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
notificationType | 2.2 | Notification Type Module | Add a new notification type |
notificationRecipient | 2.2 | Notification Recipient Module | Add a new notification recipient type. |
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
bambooEventListener | 2.2 | Bamboo Event Listeners | Register an event listener against any Bamboo Events. |
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
additionalBuildConfigurationPlugin | 2.7 | Additional Build Configuration Module | Register additional configuration UI on the Miscellaneous tab of the Configuration of a Job or Plan |
customEnvironmentConfig | 6.4 | Register additional configuration UI on the Miscellaneous tab of the Configuration of an Environment | |
decorator | 2.3 | Configure Sitemesh decorator for pages matched by regexp. | |
decorator-mapper | 2.3 | Configure Sitemesh decorator mappers. | |
footer | 2.3 | Configure custom page footer. | |
report | 1.0 | Report Module | Defines a report of build telemetry data. |
soy-function | 4.2 | Defines Soy functions. | |
struts | 12.0 | Struts Plugin Module | Struts actions and views bundled with the plugin. This enables building generic user interfaces. |
top-navigation | 2.3 | Pluggable top navigation. | |
vcsRepositoryViewer | 5.14 | Renders commit information to include web repository links and information. | |
web-item | 1.0 | Web Item Module | Add new links to the Bamboo interface. |
web-item-provider | 1.0 | Web Item Provider Module | Allow plugins to define web-items dynamically in application menus. |
web-panel | 3.0 | Web Panel Module | Allow plugins to define panels, or sections, on an HTML page. |
web-panel-renderer | 3.0 | Web Panel Renderer Module | Allows plugins to define custom renderer engines for web panels. |
web-section | 1.0 | Web Section Module | Add a new section to the Bamboo interface. |
web-section-provider | 1.0 | Web Section Provider Module | Allow plugins to define web-sections dynamically in application menus. |
web-resource | 2.3 | Web Resources | Permits web resources to be included with a plugin. |
webRepositoryViewer | 2.5 | Web Repository Viewer Module | Renders commit information to include web repository links and information. |
xwork | 1.0 | XWork Plugin Module | XWork actions and views bundled with the plugin. This enables building generic user interfaces. |
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
artifactHandler | 5.9 | Defines artifact handler which handles operations with Job artifacts. | |
capabilityConfigurator | 2.5 | Allows to modify capability settings on the fly | |
capabilityType | 2.7 | Capability Type Module | The Capability Type Module is used for registering custom capabilities |
component | 2.6 | Component Module | Enables you to add components to Bamboo's internal component system (powered by Spring. |
credentialType | 5.10 | Define credential type for Shared credentials feature. | |
dockerHandler | 6.6 | ||
downloadStrategy | 4.4 | ||
freemarkerAllowlist | 11.0 | Provides methods and classes allowed to be used at Freemarker templates. | |
encoder | 11.0 | ||
indexReader | 1.0 | Index Reader Module | Reads out custom index information written by the postBuildIndexWriter from the index. |
planExecutionGuard | 9.4 | ||
postBuildIndexWriter | 1.0 | Post Build Index Writer Module | Writes custom build data into the index for report generation. |
postChainIndexWriter | 2.7 | Post Chain Index Writer Module | Writes custom chain data into the index for report generation. |
preRssExecutionAction | 6.6 | Allows to execute custom logic before Repository Stored Specs execution. | |
resource | 2.3 | Downloadable Plugin Resources | Permits downloadable resources to be included with a plugin. |
serializableClassWhitelistProvider | 8.0 | Provides plugin's classes which are allowed to be serialized during agent-server communication. | |
vcsCacheHandler | 11.0 | Repository cache handler. | |
velocity-allowlist | 11.0 | Provides methods and classes allowed to be used at Velocity templates. | |
url-reading-web-resource-transformer | 5.6 | Stateless web-resource transforms and conditions | Stateless transformer for web resources. |
userRenameHandler | 5.7 | Handler for user rename event. |
Module Type | Since Bamboo version... | Documentation | Description |
---|---|---|---|
quickFilterRuleType | 5.12 | Quick Filter Rule Type Module | Custom type of rule used within Bamboo quick filters. |
Refer to the Getting started with Atlassian plugins guide for information on how to set up a Bamboo plugin using the Atlassian Plugin Archetypes. You will require Maven 3 and Oracle JDK 21 or Adoptium JDK 21.
If you have a Commercial License you can obtain the Bamboo Source code by contacting support team.
Follow instructions at Create a HelloWorld plugin project page how to use atlas commands
1 2atlas-run or atlas-debug
will compile your plugin's classes, create a jar in the /target
directory, download a copy of the Bamboo war, copy the plugin jar into Bamboo's WEB-INF/lib
directory and start up Bamboo. Maven will also install some default data such as the license and database configuration.
Bamboo will be running at http://localhost:6990/bamboo
, so you can go directly there in your browser and see your latest changes. You'll be able to log in with the username admin
and the password admin
.
As you make changes, you'll have to kill the Bamboo process (ctrl-c) and then run atlas-debug
again.
When you run Bamboo with the atlas-debug command, it is automatically configured to accept a remote debugger. So you'll want to create a remote debug target in your IDE for your plugin and/or the bamboo source.
Installing plugins in Bamboo is easy.
Once you have downloaded or created your plugin jar, follow these steps:
-Dupm.plugin.upload.enabled=true
and restart Bamboo
(this is required to allow uploading plugins via the UI)http://BAMBOO_URL/plugins/servlet/upm
A number of functions and areas within Bamboo are shipped as built in plugins. These can also be useful for plugin developers who want to know more about how to create their own plugins, as they showcase the functionality that can be built.
The system plugins are referenced from the following files (located in /WEB-INF/classes
:
system-actions-plugin.xml
- the built-in per-plan build expiry configurationsystem-builderConfiguration-plugin.xml
-system-dockerHadler-plugin.xml
- the built-in Docker wrapper integration.system-jira-plugin.xml
- the built-in JIRA issue integration.system-listeners-plugin.xml
- the built-in event listeners for the Bamboo System.system-notifications-plugin.xml
- the built-in notification conditions, including all builds, failed builds, after X failed builds.system-quick-filters-plugin.xml
- the built-in Quick Filters rule types.system-reports-plugin.xml
- the built-in reports of builds grouped by time periods under the Reports tab.system-repository-plugin.xml
- definition for the SVN repository shipped with Bamboo.system-servlets-plugin.xml
- the built-in servlets and filters definitions.system-shared-credentials-plugin.xml
- the built-in shared credentials definitions.system-triggerReason-plugin.xml
- definition of all the built-in build trigger reasons such as manual build, dependency build and Scheduled build.system-webUI-plugin.xml
- the built-in menu items under the Administration tab as well as the tab menu items on the View Plan page and the View Build Results page. Rate this page: