2. Agenda
What is Continuous Integration?
What is the difference between continuous integration vs. continuous delivery &
continuous deployment?
Why is continuous integration important?
Continuous Integration Process
Continuous Delivery Process
Continuous Deployment Process
Team Responsibility
3. What is continuous integration?
Is a development practice that requires developers to integrate code into a shared
repository several times a day.
Each check-in is then verified by an automated build, allowing teams to detect
problems early.
Is a strategy for how a developer can integrate code to the mainline continuously -
as opposed to frequently.
4. What is the difference between continuous
integration vs. continuous delivery &
continuous deployment?
Continuous Integration (CI) is the process of enforcing developers to merge their
code to mainstream branch or working code base as often as possible.
Continuous Delivery is the practice which aims to to deliver high quality software
really quickly every time.
Continuous Deployment refers to the release into production of software that
passes the automated tests.
5. Why is Continuous Integration important?
Continuous Integration brings multiple benefits to your organization:
Say goodbye to long and tense integrations
Increase visibility which enables greater communication
Catch issues fast and nip them in the bud
Spend less time debugging and more time adding features
Proceed in the confidence you’re building on a solid foundation
Stop waiting to find out if your code’s going to work
Reduce integration problems allowing you to deliver software more rapidly
6. Continuous Integration Process
Repository ( GitHub )
Master
Branch
Mainline
Branch
Integration Server MachineDev Machine
Integration server emails result
Checkout Code
Commits changes to mainline branch
Checkout
Code
7. Continuous Delivery Process
WORKING
APPLICATION
WORKING ON DEV
FEATURE
Dev Machine
APPLICATION CODE
VERSION CONTROL
BitBucket
GIT PULL
COMPOSER INSTALL
RUN TESTS
Jenkins
Production
git push
post hook
Manual deploy if tests passed
8. Continuous Deployment Process
WORKING
APPLICATION
WORKING ON DEV
FEATURE
Dev Machine
APPLICATION CODE
VERSION CONTROL
BitBucket
GIT PULL
COMPOSER INSTALL
RUN TESTS
Jenkins
Production
git push
post hook
automatic deploy if tests passed
9. Team Responsibility
Check in frequently
Don’t check in broken code
Don’t check in untested code
Don’t check in when the build is broken
Don’t go home after checking in until the system builds
10. The practices
Maintain a single source repository
Automate the build
Make your build self-testing
Every commit should build on an integration machine
Keep the build fast
Test in a clone of the production environment
Make it easy for anyone to get the latest executable
Everyone can see what’s happening
11. Web Links
Continuous Integration Integrate atleast Daily
Continuous Integration vs Continuous Delivery vs Continuous Deployment
Continuous Integration By Martin Fowler
Editor's Notes
Delivery requires a manual push to production where deployment is set up to automatically push to prod.
Developers check out code into their private workspaces.
When done, commit the changes to the repository.
The CI server monitors the repository and checks out changes when they occur.
The CI server builds the system and runs unit and integration tests.
The CI server releases deployable artefacts for testing.
The CI server assigns a build label to the version of the code it just built.
The CI server informs the team of the successful build.
If the build or tests fail, the CI server alerts the team.
The team fix the issue at the earliest opportunity.
Continue to continually integrate and test throughout the project.