anchor.diff:  
   <screenshot of a deploy pipeline>
   
  +## Gated deployments
  +
  +
  +
   ## External deployment systems
   
   - can use anything for deployments like spinnaker, shipit, samson
  
positive.code: # Deployments with Buildkite
  
  There are many ways to deploy your code and infrastructure using Buildkite. If you're already working with a dedicated deployment system, this can be integrated with your Buildkite pipelines, or you can deploy using Buildkite Agents from either your test pipeline or a dedicated deployment pipeline.
  
  <%= toc %>
  
  ## Adding a deployment step
  
  The simplest way to perform deployments is to add an additional deploy step to your pipeline, and to make use of [step-level branch filtering](http://localhost:3000/docs/pipelines/branch-configuration#step-level-branch-filtering).
  
  For example, the following pipeline includes a deployment step that runs after the tests pass. The deploy step is only included on `master` builds, and uses [concurrency limiting](/docs/pipelines/controlling-concurrency) to ensure only one deployment is run at a time:
  
  ```yml
  steps:
    - label: ":hammer:"
      command: "scripts/test"
    - wait
    - label: ":rocket:"
      command: "scripts/deploy"
      branches: "master"
  
negative.code: 
  <screenshot of a deploy step>
  
  ## Dedicated deployment pipelines
  
  Creating dedicated deployment pipelines, separate to your test pipelines, makes it easier to:
  
  * Separate deployment failures from test failures
  * Separate test and deployment pipeline.yml files
  * Re-run failed deployments
  * Simplify adding rollback steps
  * Use teams for role based access control
  * Whitelist deploy pipelines in agent hooks
  
  For example, the following "My App" test pipeline will trigger a deployment build whenever a master test build passes:
  
  