CI CD - seanremenyi/Notes_aws_developer GitHub Wiki
Software development best practice: Continuoous integrations, continuous delivery/deployment Make small changes and Automate everything: Small, incremental code changes. Automate as much as possible e.g. code integration, build, test and deployment Why? Modern companies like AWS, Netflix, Google and Facebook have pioneered this approach to releasing code, successfully applying thousands of changes per day Automations is good: fast, repeatable, scalable and enables rapid deployment Manual is bad: slow, error prone, inconsisten, unscalable, complex Small changes: Test each code change and cach bugs while they are small and simple to fix
Workflow: Shared code repository: Multiple developers contributing to a shared code respooistory like Git. Frequently merging or integrating code updates. Automated build: When canges appear in the code repository this triggers an tuomated build of the new code Automated tests: Run automated tests to check the code locally before it is commited into the master code repository Code is merged: After successful tests, the code gets merged to the master repository Prepared for deployment: Code is built, tested and packaged for delivery Manual Desciesion: Humans may be involved in the decision to deploy the code. This is known as continuous Delivery Or Fully Automated. The system automatically deploys the new code as soon as it has been prepared for deployment. This is known as Continuous Deployment
Tools: Codecommit: Source and version control Source control service enabling teams to collaborate on code, html pages, scripts, images and binaries Codebuild: Automated build Compiles source code, runs test and produces packages that areread to deploy. Codedeploy: Automated deployment Automates code deployments to any instance, including ec2, Lambda and on-premises CodePipeline: Manages the workflow End-to-end solution, build, test and deploy your application every timme there is a code change