Home - GradedJestRisk/cicd-training GitHub Wiki
Welcome !
CI requires:
- developer
- write unit test code
- write code, and run it against test code
- send code and test code to SCM on a feature branch
- integration server, on feature branch
- perform quality check (code quality, test coverage)
- build a new version
- run unit/integration test code against it
- developer
- submit pull request
- integration server
- try to merge feature branch into temporary branch
- build a new version
- run unit/integration test code against it
- prepare code review
- team
- run code review
- approve pull request
- integration server
- merge feature branch into master
- run unit/integration test code against it
- build a new version
- publish a new version in a repository
CD requires of :
- deployment server to
- watch for new version in a repository
- deploy it a test environment, enabling manual tests
- when tests passed, deploy it to a production environment
CI and CD are easiest with virtualization, as it guarantee an identical execution context in all environments, reducing impedance mismatch. Operating-system-level virtualization offer better performance than complete VM, and image are smaller, causing it to be called "lightweight" virtualization.
CI/CD came from XP, where it was used to deliver into production as fast as possible. Freeman and Pryce in GOOSE recommend starting any project with a walking skeleton, eg. building the simplest possible app (king of hello-world) and sending it into production using CI/CD.
When there's no automated tests, there's no CI/CD. One solution remais: automate build and deploy. There's no continuity any more. Manually trigger the build and deploy to an environment.