Continuous Integration
Continuous
integration is the practice of constantly merging development work with a Master
branch so that you can test changes and test that those changes work with other
changes. Idea here is test our code as often as possible so we can catch the
issues/bugs as early as possible.
In
the continuous integration process, most of the work is done by an automated
test technique.
Continuous Deployment
Continuous deployment eliminates the human safeguards
against unproven code in live software. It should only be implemented when the
development and IT teams adhere to production-ready development practices and
thorough testing, and when they apply sophisticated, real-time monitoring in
production to discover any issues with new releases.
Ideal work flow
Step 1: Developer checks in code to development branch.
Step 2: Continuous integration server picks up the change,
merges it with Master, and performs unit tests and votes on the merge to
staging environment based on test results.
Step 3: If Step 2 is successful, developer deploys it to the staging environment
and QA tests the environment.
Step 4: If Step 3 passed, you vote to move to production and the continuous
integration server picks this up again and determines if it’s ok to merge into
production.
Step 5: If Step 4 is successful, it will deploy to production environment.