Deployment Pipelines

Goal: Any deploy to any env is a fully automated process that can be performed on demand trivially.

Including:

  • Deploy to local machine (ie local testing)
  • Deploy to pre-existing testing environment
  • Deploy to brand new environment
  • Deploy to new/existing dynamically specified environment
  • Deploy to production

Release Engineering

Stages

Key idea: Tiered levels of testing to enable near immediate feedback on code that’s changed.

Key idea: Self service deployment ensures deployment to dev is the same as to production. Taking the fear out of deployment

Key idea: Manual testing will always be required, but by automating the deployment of environments, it can be made fully reproducible and methodical.

  • Commit stage: only a few minutes to run
    • must be fixed immediately if fails.
  • Acceptance stage: more comprehensive test suite
    • Once they pass these, and all other automated tests, self-service deployment is possible
  • Have ability to run interactive and/or exploratory tests/envs. Integration, capacity, etc.
    • Self service deployment,using same method as deploy to staging and/or production
  • Deploy to staging
  • Deploy to production

Ties together Configuration, Continuous Integration, Test Suites, Continuous Delivery in a holistic way.

Best Practices


resources: