Home - GradedJestRisk/cicd-training GitHub Wiki

Welcome !

Table of Contents

Continuous Integration (CI)

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

Continuous Deployment (CD)

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

Virtualization

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.

Walking skeleton

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.

Continuous Delivery (??)

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.

⚠️ **GitHub.com Fallback** ⚠️