Developing for Remote Bamboo Agents, AtlasCamp US 2012
Upcoming SlideShare
Loading in...5

Like this? Share it with your network


Developing for Remote Bamboo Agents, AtlasCamp US 2012

Uploaded on

Brydie McCoy, Java Developer ...

Brydie McCoy, Java Developer

As more and more peoples' building demands grow, they expand from building everything locally to a distributed building system or the elastic cloud. And for OnDemand the elastic cloud is the only option. Unfortunately developing plugins for remote/elastic agents has its own set of gotchas. Most plugins written for Bamboo do not work properly on remote agents. This talk will cover the core principles of developing for remote agents, what you can and can't do, as well as more advanced topics such as data transfer and communication between the agent and the server.

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 165 107 24 18 9 5 1 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide
  • \n
  • Who I Am. Why You should listen to\n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n


  • 1. Bamboo Plugins And Remote AgentsBrydie McCoy
  • 2. Me Brydie McCoy 5 years on Bamboo Mainly Java, but not exclusive Written many plugin points and plugins
  • 3. Bamboo Concepts
  • 4. Agents Machine B Remote Agent Remote Agent Machine ABamboo Server Remote Agent Local Agent Amazon Elastic Local Agent Cloud Local Agent Elastic Agent Elastic Agent Elastic Agent
  • 5. Tasks
  • 6. Terminolgy User Developer Plan Chain, TopLevelPlan, Build (legacy) Stage ChainStage Job Job, Buildable, Build (legacy) Plan Branch ChainBranch Build/Plan Result/Build Result ChainResultSummary Stage Result ChainStageResult Job Result BuildResultsSummary+ “Plan” is the common interface for all Jobs, Chains and Branches+ Immutable versions of most of these classes.
  • 7. Bamboo Is not for everyone.CI is complexLack of resources and and expertiseYou don’t want us writing support for yoursystemsBamboo would become bloated.
  • 8. Yet.Bamboo is a plugin platformFill holes in the marketFill holes in your team
  • 9. Available Plugin points in BambooBuild Agent Requirement Filter Module Report ModuleBuild Complete Action Module Web Repository Viewer ModuleBuild Processor Module XWork Plugin ModuleBuild Processor Server Module Capability Type ModuleBuild Trigger Condition Module Index Reader ModuleCommand Decorator Module Plan Deletion Interceptor Action ModuleCustom Build Definition Transformer Module Post Build Index Writer ModulePost-Build Completed Action Module Post Chain Index Writer ModulePost-Chain Action Module Event Listeners (33 events to lock into?)Post-Job Action Module Component Import Plugin ModulePost-Stage Action Module Component Plugin ModulePre-Build Action Module Module Type Plugin ModulePre-Build Queued Action Servlet Context Listener Plugin ModulePre-Chain Action Module Servlet Context Parameter Plugin ModulePre-Job Action Module Servlet Filter Plugin ModulePre-Stage Action Module Servlet Plugin ModuleRestart Failed Stage Action Module Template Context Item Plugin ModuleResume Manual Stage Action Module Web Item Plugin ModuleStop On Manual Stage Action Module Web Panel Plugin ModuleSource Repository Module Web Panel Renderer Plugin ModuleTask Plugin Module Web Resource Plugin ModuleTrigger Reason Module Web Resource Transformer Plugin ModuleNotification Condition Module Web Section Plugin ModuleNotification Recipient Module REST plugin module typeNotification Type Module Gadget plugin module typeAdditional Build Configuration Module
  • 10. Build Process Build is Triggered Trigger Reason Trigger Condition Changes retrieved for all repositories Source Repository Allocate Build NumberCreation and persistence of Database ObjectsCreation of Build Contexts Pre Chain Begin Chain Execution Action Branch Merging Stage Execution Logic Branch Push Post Chain Finalise Chain Execution Action Chain Execution Complete
  • 11. Requirements + Capabalties Failed Stage Restarted Calculated Pre Build Queued Action Manual Stage Resumed Action Jobs Places on JMS queue Execute Next Stage Build Agent Requirement Fileter Pre Stage Action Capability Type Pre Job Job Queue Trigger all jobs for stage Action Wait For Job Job Execution Completeion Logic Finalise Stage Post Stage Action Process Job State Build Processor Server Result No Did the last stage Yes Save Job Post Build Index Writer fail? to DB and Index No Tell chain the Job Post Job Yes Stop on Manual Stage is finished Action Have we hit a manual stage No Post Job Events Post Build Complete Action NoYes Is there another stage to run? Are All Jobs In Stage Finished?
  • 12. Job Queue Agent Prepare build directories Retrieve artifacts Source Repository Process from server Prepare Job Pre Build Action Run Regular Task Task Command Decorator Source RepositoryYes Did task Succeed? Is there Another Task? No Run Finalising Task Task Command Decorator Source RepositoryYes Is there Another Task? No Calculate Build State Build Processor Send Artifacts to Server Send Results Back To Server
  • 13. Remote Agents Taking StormCustomers have too many buildsCustomers need multiple OS, platforms ordevicesOn Demand - Remote is the only option
  • 14. Whats available? Not Available Available•Database •Bandana •ActiveMQ •Build Working Directory•File System •Passed Artifacts •Lucene Index •Checkout out code•Other Plans •Products of previous tasks•Previous Jobs •Job Configuration•Historical data•Managers
  • 15. Tasks
  • 16. TaskDefinition
  • 17. TaskConfiguration
  • 18. TaskContextBuildContext.getBuildResult.getTaskResults().
  • 19. SavingTaskDataBuildContext.getBuildResult.getTaskResults().
  • 20. CustomDataMap