Tikal DevOps courseYoram Michaeli
Continuous Integration
Introduction
CI
• Everything as code
• Similarity of environments
• Developers operations
• Operation development
• Continuous <xxx>
• Automation
DevOps key concepts
You’re not
alone
You’re not alone...
● This is not a one-man-show!
● Agile processes
● Shift-left approach
● Time-to-market
● On-going integration
Continuous Integration
Continuous Integration is...
“Continuous Integration is a software development practice
where members of a team integrate their work frequently,
usually each person integrates at least daily - leading to multiple
integrations per day.
Each integration is verified by an automated build (including
test) to detect integration errors as quickly as possible.”
Martin Fowler
Continuous Integration key concepts
● Integrate early
● Integrate often
● Fail fast and bring the pain forward
● Feedback loops - the tension between speed and quality
○ Per-commit — fast iteration
○ Nightly - qualified and reasonable iteration
○ Weekly - high quality and slow iteration
Developer
Aspect
Developer aspect
● ‘It works for me!’
● Isolated build and test environment
● Simple work procedures
● Clear failures notifications
● Simple code integration
QA Aspect
QA aspect
● Frequent versions
● Unit tests
● Regression tests
● Integration tests
● Automation
Team
Aspect
Team aspect
● Time-to-market
● Clear status
● Reduce release errors
● Production-like environment
● Shift-left
Basic CI Flow
Basic CI flow
● Code commit
● Code build
● Unit tests
● Deployment
● Integration tests
● Notification for each step failure
Effective CI
Effective CI - the 5 minutes rule
An effective CI is - following a code change, a
no-more-than-5-minutes-build is being
triggered, so that a code build, alongside a
validation test-set, is done and - at the end of
the process - there is a notification whether the
change caused a failure or not with a proper
blame indication
CI ➢ Pipeline
CI ➢ PIPELINE
● Once you have CI (and even CD) in place, the deployable
unit path is called a pipeline
● A pipeline procedure is triggered when code is committed.
Next, the build system compiles the code and runs unit
tests.
● After integration testing is done, you can create images
and push them to a registry service.
CI tools
CI tools
Jenkins
TeamCity
Travis-CI
Bamboo
GitLab-CI
CircleCI
Codeship
GO CD
Amazon Pipeline
Continuous integration introduction

Continuous integration introduction

  • 1.
    Tikal DevOps courseYoramMichaeli Continuous Integration Introduction CI
  • 2.
    • Everything ascode • Similarity of environments • Developers operations • Operation development • Continuous <xxx> • Automation DevOps key concepts
  • 3.
  • 4.
    You’re not alone... ●This is not a one-man-show! ● Agile processes ● Shift-left approach ● Time-to-market ● On-going integration
  • 5.
  • 6.
    Continuous Integration is... “ContinuousIntegration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.” Martin Fowler
  • 7.
    Continuous Integration keyconcepts ● Integrate early ● Integrate often ● Fail fast and bring the pain forward ● Feedback loops - the tension between speed and quality ○ Per-commit — fast iteration ○ Nightly - qualified and reasonable iteration ○ Weekly - high quality and slow iteration
  • 8.
  • 9.
    Developer aspect ● ‘Itworks for me!’ ● Isolated build and test environment ● Simple work procedures ● Clear failures notifications ● Simple code integration
  • 10.
  • 11.
    QA aspect ● Frequentversions ● Unit tests ● Regression tests ● Integration tests ● Automation
  • 12.
  • 13.
    Team aspect ● Time-to-market ●Clear status ● Reduce release errors ● Production-like environment ● Shift-left
  • 14.
  • 15.
    Basic CI flow ●Code commit ● Code build ● Unit tests ● Deployment ● Integration tests ● Notification for each step failure
  • 16.
  • 17.
    Effective CI -the 5 minutes rule An effective CI is - following a code change, a no-more-than-5-minutes-build is being triggered, so that a code build, alongside a validation test-set, is done and - at the end of the process - there is a notification whether the change caused a failure or not with a proper blame indication
  • 18.
  • 19.
    CI ➢ PIPELINE ●Once you have CI (and even CD) in place, the deployable unit path is called a pipeline ● A pipeline procedure is triggered when code is committed. Next, the build system compiles the code and runs unit tests. ● After integration testing is done, you can create images and push them to a registry service.
  • 20.
  • 21.