Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 1.57 KB

build-deploy.md

File metadata and controls

50 lines (39 loc) · 1.57 KB

build deploy

requirements

  1. Each step runs inside a docker container
  2. Steps are specified in small Makefiles/scripts
  3. Check, test, and build steps can be run from a developer laptop
  4. Deploy steps can be run from a developer laptop
  5. Docker containers can be built
  6. IAM roles are assumed by the CI system/developer rather than baked into steps
  7. Secrets are provided by the CI system/developer rather than baked into steps
  8. The packaged application runs in the same environment as tests
  9. Medium-sized tests (ie: tests that span multiple processes/containers) can be run
  10. The CI system caches steps and only runs steps that have changes
  11. Common steps can be reused across repos
  12. UI to see the CI logs
  13. GitHub status checks that notify of success/failure
  14. Steps can be blocks that require manual intervention
  15. Steps can be expressed in YAML rather than a general-purpose language
  16. Pipelines can run on a schedule
  17. Pipelines changes can be made on branches, ie: the master branch pipeline can remain as is until merged
  18. Steps can run in parallel/asynchronously (improves end to end timed)

pipeline

Assumes green/blue deployment (is this reasonable for CF/k8s?)
Q: where do medium-sized tests go?

  1. check-test

    1. check (linter, static type analyse)
    2. test
  2. build

    1. build docker container
    2. push container
  3. !master branch deploy

    1. deploy to test
    2. smoke test
    3. flip
  4. master branch deploy

    1. deploy to prod
    2. smoke test
    3. flip
    4. notifications - slack, new relic release events
    5. publish to corp catalogue