Atlassian Bamboo Case Study

Case Study: How Nuance takes advantage of Virtual Agents

Great plugin, we use it to revert our agents to a clean snapshot. Works fine, and many thanks to the StiltSoft team for the fast help and support.

Siegmar Marseiler

Nuance Communications International

Nuance is the provider of speech and imaging solutions for businesses and consumers around the world. Nuance technologies, applications and services make the user experience more compelling by transforming the way people interact with information and how they create, share and use documents. Every day, millions of users and thousands of businesses, experience Nuance by calling directory assistance, getting account information, dictating patient records, telling a navigation system their destination, or digitally reproducing documents that can be shared and searched. Making each of those experiences productive and compelling.

Nuance portfolio comprise of speech and imaging products backed by the expertise of our professional services organization and a partner network that can create solutions for businesses and organizations around the globe. So whether its switching to speech to improve customer service or business productivity, or simplifying the way people work with documents, Nuance has the solution.

For more information visit their web site at

Usage of Virtual Agents for Bamboo

The customer has chosen Bamboo for running deployments including all testing activities. They were already in the process of evaluating our add-on Virtual Agents for Bamboo.

It provides an option of Virtual Agents for automatic management of virtual machines that run build agents. This leads to efficient execution of build and deployment tasks. In addition, our solution allows you to use build and deployment tasks that can start and stop virtual machines.

Our customer mostly uses our add-on for starting virtual machines with agents. The capabilities of Virtual Agents are not used for now.

Specifics of Testing Methods

The customer had a pool of virtual machines and each one runs Bamboo agents configured for execution of NUnit tests. These agents are used by different projects. After running tests, the virtual machine with the agent is reset to the specific snapshot and restarted for running a new series of NUnit tests for another build task.

The generic build plan was comprised of the following stages:

  • Stage 1: Start build on a build agent. If succeeded, it proceeds to the next stage.
  • Stage 2: Start NUnit tests on a Test agent. If succeeded, it proceeds to the next stage.
  • Stage 3: Reset Test agent to the specific snapshot, then copy testing results & binaries, send an email, and complete the build.

Each stage is run on a separate virtual machine with the agent. After running tests at stage 2, it was necessary to determine which machine to reset to a clean snapshot at stage 3.

The key issue was a necessity to enter a specific name of the virtual machine, which was impossible due to dynamic selection of the necessary machine. They needed some solution that will allow them to determine the exact name of the virtual machine and pass it to the Start VM Task configuration for runtime.

Originally, they wanted to use Virtual Remote Agents management, but this way was not sufficient for them. They needed a quick way to reset the virtual machine with the test agent to the appropriate snapshot and restart it immediately, so all test agents always stay up and running. In the result, they would like to get a clean test machine for running a new portion of tests.

Easy and Universal Solution

After evaluating these requirements from the customer, we were thinking over several solutions that might help the customer accomplish this task.

The best and the most elegant solution for doing this was introduction of variables that might be read by Bamboo. The customer just added the following variables:

  • vm.snapshot
  • vm.username

You can also use this approach for all parameters defined in any build tasks you manage, for more details please see Bamboo documentation.


The administrator can manage the set of necessary variables and further use them while configuring tasks in Bamboo.

While managing tasks for execution on virtual machines, instead of entering some specific values the customer just needs to define variables, like ${bamboo.variable-name}. It is necessary to expose them as environment variables, so their actual values will automatically replace these variables during task execution.


To avoid exposure of the password in the form of a variable, it is entered manually.

Results Briefly

The usage of Bamboo environment variables did not even require any development from our side, in such a way, native functionality of Bamboo in junction with our Virtual Agents add-on allowed the customer to get what they needed. Now they are running each round of testing on a clean snapshot of the virtual machine and they are happy with this!