Skip to content

CICD - Introduction

  • We have learned how to:
    • Create AWS resources, manually (fundamentals)
    • Interact with AWS programmatically (AWS CLI)
    • Deploy code to AWS using Elastic Beanstalk
  • All these manual steps make it very likely for us to do mistakes.
  • We would like our code "in a repository" and have it deployed onto AWS
    • Automatically
    • The right way
    • Making sure it's tested before deployed
    • With possibility to go into different stages (dev, test, staging, prod)
    • With manual approval where needed
  • To be a proper AWS developer - we need to learn AWS CICD

  • This section is all about automating the deployment we've done so far while adding increased safety
  • We'll learn about:
    • AWS CodeCommit - storing our code
    • AWS CodePipeline - automating our pipeline from code to Elastic Beanstalk
    • AWS CodeBuild - building and testing our code
    • AWS CodeDeploy - deploying the code to EC2 instances (not ElasticBeanstalk)
    • AWS CodeStar - manage software development activities in one place
    • AWS CodeArtifact - store, publish and share software packages
    • AWS CodeGuru - automated code reviews using Machine Learning

Continuous Integration (CI)

  • Developers push the code to a code repository often (e.g. GitHub, CodeCommit, BitBucket...)
  • A testing / build server checks the code as soon as it's published (CodeBuild, Jenkins CI, ...)
  • The developer gets feedback about the tests and checks that have passed / failed

  • Find bugs early, then fix bugs

  • Deliver faster as the code is tested
  • Deploy often
  • Happier developers, as they're unblocked

Continous Deliver (CD)

  • Ensures that the software can be released reliably whenever needed
  • Ensures deployments happen often and are quick
  • Shift away from "one release every 3 months" to "5 releases a day"
  • That usually means automated deployment (e.g. CodeDeploy, Jenkins CD, Spinnaker, ...)

Technology Stack for CICD