Just in time for the year end festivities, we are pleased to announce the release of Software Delivery Machine 1.2.0. This release was primarily focused on bug fixes but we also managed to add some cool new features.

If you're new to Atomist and the SDM framework, I strongly recommend reading through the Atomist Advent of Automations.

New Features

The following noteworthy features were added in the 1.2.0 release:

  • The CLI now provides an improved config command to log into Atomist and configure your API key and workspaces.
  • Introduced LazyProjectLoader to prevent eager cloning of Git projects during evaluation of pushRules.
  • Added convenience method to implement ExecuteGoal instances that operate on cloned projects with doWithProject.
  • Reworked spawning of external system processes to make it more reliable across all platforms.
  • CodeTransforms can now run in dry-run mode to preview their impact.
  • GoalExecutionListener instances can now be registered on goals.


Here is the combined changelog for the following released projects:

The format is based on Keep a Changelog and the projects adhere to Semantic Versioning.


  • Allow more options to be passed to createGoal. ab89243 @atomist/sdm@1.2.0
  • Add dryRun flag to CodeTransform invocations. #613 @atomist/sdm@1.2.0
  • Add helpers for doWithRepos and doWithProject. #615 @atomist/sdm@1.2.0
  • Provide spawnLog with consistent spawn interface. #620 @atomist/sdm@1.2.0
  • Add exec and spawn to doWithProject callback. #618 @atomist/sdm@1.2.0
  • Add goal function to create a new GoalWithFulfillment. 311a273 @atomist/sdm@1.2.0
  • Allow to register GoalExecutionListener on a GoalWithFulfillment. #624 @atomist/sdm@1.2.0
  • Allow state computation in push rule evaluation. #630 @atomist/sdm@1.2.0
  • Add actionableMenu to create menus from CommandHandlerRegistrations. 9ddfe18 @atomist/sdm@1.2.0
  • Provide useful error messages when project generation fails. #634 @atomist/sdm@1.2.0
  • Add targets.branch to CodeTransform targeting. #636 @atomist/sdm@1.2.0
  • Add ability to select goal based on push in DSL. #642 @atomist/sdm@1.2.0
  • Add command to cancel in process goal set. 04e8484 @atomist/sdm-core@1.2.0
  • Add thread_ts to MessageOptions to address threads. 49b9be7 @atomist/automation-client@1.2.0
  • Disable graphql-tag fragment warning. #419 @atomist/automation-client@1.2.0
  • Allow to print out configuration sources during startup. a255171 @atomist/automation-client@1.2.0
  • Add HEAD method to HttpClient. 32fbc96 @atomist/automation-client@1.2.0
  • Gracefully queue messages when the WS disconnects. #426 @atomist/automation-client@1.2.0
  • Introduce targets.branch and fix project.id to point to correct project. #434 @atomist/automation-client@1.2.0
  • Stronger typing for parameters. #437 @atomist/automation-client@1.2.0
  • Add login, config command to connect to a workspace. #57 @atomist/cli@1.1.0


  • Introduce LazyProjectLoader and LazyProject interfaces. #625 @atomist/sdm@1.2.0
  • Don’t abort code transform on many repos if one repo fails. #626 @atomist/sdm@1.2.0
  • Rename enrichInvocation to attachFact. #632 @atomist/sdm@1.2.0
  • Stronger typing on actionable(Command|Menu). 1a3e3e2 @atomist/sdm@1.2.0
  • Change default code transform branch name to use proper date. 87a5514 @atomist/sdm@1.2.0
  • Move rolar log to use HttpClient and factory. #87 @atomist/sdm-core@1.2.0
  • Tighten typing on menuForCommand and buttonForCommand. de3b582 @atomist/automation-client@1.2.0
  • Update registration timeout to 30s. 65d9ba9 @atomist/automation-client@1.2.0


  • Deprecate sdmGoal on GoalInvocation. dbb25d2 @atomist/sdm@1.2.0


  • Remove old Builder interface; moved to sdm-pack-build. 6211aef @atomist/sdm@1.2.0


  • Execute startupListeners before scheduling the triggered listeners. #611 @atomist/sdm@1.2.0
  • Using createGoal with space in displayName creates invalid uniqueName. #623 @atomist/sdm@1.2.0
  • Fix issues when pushTest is missing on project listener. 7fd6fab @atomist/sdm@1.2.0
  • Update doc on goal execution listener. #639 @atomist/sdm@1.2.0
  • Boolean parameter types are not supported. #423 @atomist/automation-client@1.2.0
  • Introduce targets.branch and fix project.id to point to correct project. #434 @atomist/automation-client@1.2.0
  • Fix defaulting of targetBranch when raising PR. 6c80f10 @atomist/automation-client@1.2.0
  • Logging setting can cause startup hangs. #435 @atomist/automation-client@1.2.0
  • Don't disable logging by just depending on sdm-local. cfedbc9 @atomist/sdm-local@1.0.4

Update Path

The 1.2.0 is backwards compatible and can be a dropped into any SDM running SDM 1.0.0 or later. For this release, please run the following commands to update your SDM installation:

$ npm install --save-exact \
    @atomist/sdm@1.2.0 \
    @atomist/sdm-core@1.2.0 \
$ npm install --save-exact --save-dev @atomist/sdm-local@1.0.4 

Run the following command to update your CLI installation:

$ npm install -g @atomist/cli@1.1.0