BuildMaster Documentation

OtterScript & Execution Engine

  • Last Modified: 2020-12-02

To deploy your applications and releases, BuildMaster uses an advanced execution engine that's capable of running thousands of different operations and scripts on thousands of different servers.

While BuildMaster's execution engine is an integral part of BuildMaster itself, the core engine was designed to be shared across products, and is also used in Otter (our Infrastructure as Code tool) and Romp (a stand-alone, command-line tool).


Operations are the tasks that the execution engine will run on a server. BuildMaster ships with dozens of built-in operations and you can add more through BuildMaster Extensions, to see a list of all of our extensions head over to the Extensions feed.

Some operations are quite simple (Sleep), while others are quite complex (Synchronize Files across Servers). Through a combination of Operations, Scripts, Variables, and Blocks, you will be able to model any plan to deploy an application to an environment.

OtterScript in BuildMaster

OtterScript is a Domain-Specific Language that was designed in tandem with the execution engine to represent configuration plans and orchestration plans in Otter, and deployment plans in BuildMaster.

You really don't need to learn OtterScript; it's simply the textual representation of a plan, and plans are already fully editable in the drag-and-drop plan editor. If you switch back-and-forth between visual and code modes, you'll probably learn it on your own, but it's also pretty well documented.

Legacy Execution Engine

BuildMaster also includes a separate, side-by-side execution engine that is used to run deployment plans developed prior to v5. Although the legacy engine will be indefinitely supported, we don't recommend using it for new applications/plans.

The documentation in this section will not focus on the legacy engine, but KB#1107- Importing BuildMaster v4 Deployment Plans contains plenty of details on the differences, as well as migration strategies.

Is this documentation incorrect or incomplete? Help us by contributing!

This documentation is licensed under CC-BY-SA-4.0 and stored in GitHub.

Generated from commit efc6666b on master