CI vs CD vs CD Flashcards
What stage of the CI/CD pipeline is CI used in?
Development
Define Continuous Integration…
The practice where developers merge back into the main branch as often as possible.
Automated regression testing is carried out to keep build green and keep merges as simple as possible.
Why is CI test heavy?
Emphasis on testing to try and avoid merge conflicts.
Define Continuous Delivery…
The frequent release of software from staging to production. Automated as much as possible, but manual button press releases to production.
An extension of continuous integration.
In Continuous Delivery, what is the benefit of having a manual release?
- Flexible with release time frames. E.g can have every day, every week, every month etc.
- More control over release to production
With Continuous Delivery or Deployment, what should the time schedule for releases be and why?
- Release should be kept frequent and small increments.
- This prevents large bugs occurring and snowballing. Any issues with software can be addressed quickly.
Define Continuous Deployment…
An extension of Continuous Delivery, but with automation throughout.
There is no manual deployment to production.
What are the benefits of Continuous Deployment over Delivery?
- Full automation means no excess worrying and preparing for release day.
- Hands off release means focus can fully be on development rather than prepping for release.
- Excellent for creating tight and continuous feedback loops
- Small changes mean easier error correction
- Continuous improvement is possible due to automated feedback loop.
What are the cons of Continuous Deployment?
- Requires excellent testing to ensure no bug overflow to production
- Bugs can overflow to production
- Documentation writing must keep pace with releases
- Requires solid CI and testing foundation
What are the cons of Continuous Delivery?
- Requires excellent CI foundation
- Requires excellent testing suites
- Automation setup can be complicated
- Preparing for release can distract and detract from development
What are the benefits of Continuous Integration?
- Automated testing ensures less bugs passed to production
- Instant error flagging leads to quick resolution processes
- Specialised CI server for automation and running tests can reduce cost and improve efficiency
- QA team spends less time testing
What are the cons of Continuous Integration?
- Each new feature added needs to have tests written for it.
- Frequent merging can be complicated and time consuming.
- May require extra specialists for merging practice
- Overhead of potentially setting up a CI server to run integrations and monitor main branch.
Why is there a huge emphasis on automation in CI?
To automate testing to ensure there are no merge conflicts when integrating to main branch.