SlideShare a Scribd company logo
CONTINUOUS INTEGRATION
PRESENTATION PLAN
1.

State of the practice
1.
2.
3.
4.

5.
6.
7.
8.

2.
3.
4.
5.
6.

What is continuous integration?
Why do development teams need continuous integration?
Prerequisites for continuous integration process
General CI workflow
How does continuous integration affect development process?
When CI is not effective?
Short tools overview
Benefits of using CI

Problems with current state of the practice
Research ideas
Future of CI
CI and COPE
Recommended readings

2
WHAT IS CONTINUOUS
INTEGRATION?
Widely used
software
engineering
practice

development
process
automation
technique

Approach
helping to
reduce risks
3
WHY DO TEAMS NEED CONTINUOUS
INTEGRATION?
 Martin

Fowler:

… team integrate their work frequently,
… leading to multiple integrations per day.
… this approach leads to significantly reduced integration
problems and allows a team to
develop cohesive software more rapidly.
 CI

is the one of the XP practices
 Allows team to get fresh latest build
regularly
4
PREREQUISITES FOR CONTINUOUS
INTEGRATION

Not everything

you can integrate continuously

5
PREREQUISITES FOR CONTINUOUS
INTEGRATION

VCS system

CI tool

Separate
server
(usually)

Build
automation

Selftesting app
(unit-tests)

6
GENERAL CI WORKFLOW

Build
(compilation,
unit-testing, db
integration, etc)

Committing
latest
changes

Update by
scheduler
(on CI
server)

Application
is ready

7
GENERAL CI WORKFLOW
changes
detected

update

commit

build &
deploy

~

repository

deployment server

continuous integration server

8
TOOLS CLASSIFICATION
CI tools
Build management tools
Unit testing tools
Inspection tools
• Code coverage analysis
• Static analysis (syntax check, code
dependencies)
• Copy/paste detectors
10

Documentation generation tools
CI TOOLS


CruiseControl



CruiseControl.NET



CruiseControl.rb



JetBrains TeamCity



Apache Hudson



Apache Continuum



Atlassian Bamboo



FinalBuilder



phpUnderControl



XInc

11
CI TOOLS
Too many tools
 All are great
 All have the same principle
 But each has specific features


Diagrams,
metrics,
reporting
Interface,
usability

Integration
with SCM
tools

Notification

Distributed
builds

Different
ALM
approaches

12
CONTINUOUS INTEGRATION – PART OF SDLC

Initiation

Requirements
development &
management

Design

Testing

Integration

Implementation

Deployment

Maintenance &
support

Utilization

13
CONTINUOUS INTEGRATION – PART OF SDLC

Initiation

Requirements
development &
management

Design

Basic continuous integration

Testing

Integration

Implementation

Deployment

Maintenance &
support

Utilization

14
CONTINUOUS INTEGRATION – PART OF SDLC

Initiation

Requirements
development &
management

Design

Basic continuous integration

Testing

Integration

Implementation

Maintenance &
support

Utilization

Extended build
management

Deployment

15
BUILD TOOLS


Ant



NAnt



MSBuild



Maven



Make



Phing



Rake



…
16
UNIT TESTING TOOLS


Junit



NUnit



CppUnit



PHPUnit



SimpleTest



JSUnit



J3Unit

17
INSPECTIONS TOOLS.
TEST COVERAGE
Cobertura
 Atlassian Clover
 jTest
 JCoverage
 CodeCover
 EMMA
 Parasoft Insure++
 Ncover
 Xdebug
 Coverage.py


18
INSPECTIONS TOOLS.
TEST COVERAGE
Cobertura
 Atlassian Clover
 jTest
 JCoverage
 CodeCover
 EMMA
 Parasoft Insure++
 Ncover
 Xdebug
 Coverage.py


Java
C++
C#
PHP
19
Python
INSPECTIONS TOOLS.
STATIC ANALYSIS
 PMD
 FindBugs
 JLint

 FxCop
 Checkstyle
 ReSharper

 PHP_CodeSniffer
 Yasca
 NDepend

20
INSPECTIONS TOOLS.
COPY/PASTE DETECTORS
CPD

(Copy paste detector)
Checkstyle
Simian
Jplag
Atomiq
Clone digger
PBA

21
DOCUMENTATION GENERATION
TOOLS
Doxygen
JavaDoc
NDoc
CppDoc
phpDocumentor

pyDoc
RDoc

22
OTHER TOOLS

Source code
metrics (loc)

Dead code
detectors

Profiling

…
23
BENEFITS OF USING CI












Reduces risks of problems with source code integration
by stimulating team members to perform integration
early and often.
Provides automated reports about code quality.
Increases visibility of current project status and project
progress by providing shared reports available to all
team members.
Provides historical data on source code quality and
metrics.
Always contains last fresh build that could be used for
deployment, testing or other purposes.
Reduces number of routine repetitive activities by
automating part of development lifecycle.
Runs costly inspections on the server (in contrast to
inspections available in modern IDEs)
Stimulates developers to write better source code

24
BENEFITS OF USING CI FOR RESEARCH

Reproducible results of research

25
PROBLEMS


“Don‟t break the build” obsession.
This rule undermines cooperation, transparency and trust
between team members
 Root cause of the problem is failure to draw apply different
CI practices for different SDLC stages (development and
release)




Necessity to instantiate CI build plan for separate
branch/codebase
Some branches require instantiation of CI build plan, some
don‟t
 Usually there is no rule specifying whether branch should
have its own CI build plan configuration


Benefits of CI are different for different SDLC stages
 Necessity to write and support build scripts




Very often it happens that activity of supporting build scripts
is not a priority.

26
PROBLEMS
Even though builds run automatically, somebody needs
to support and configure CI server if project grows in
size.
 Continuous deployment and continuous release seem
to be a good idea, but do not usually occur in practice
due to lack of flexibility and configuration complexity.
 Teams that use CI are forced to make some premature
commitments that are difficult to change later (project
structure, deployments configuration, etc).


27
WHEN CI IS NOT EFFECTIVE?
 Pure

DVCS (without central repo)
 Experimental development
 Small projects
 Interpreted languages without unit-tests
 When database is being changed too often
 Types of projects
 Documentation (BA, etc)
 DB
 Support & maintenance

28
WHY SHOULD WE USE CI IF IDES
ALREADY HAS EVERYTHING WE NEED?


Modern IDEs already have:








embedded build systems
unit-tests
static inspections
dynamic inspections
code coverage metrics
documentation generation
…

29
WHY SHOULD WE USE CI IF IDE ALREADY
HAS EVERYTHING WE NEED?
Think about continuous integration as part of
your IDE running in the cloud

Therefore, it is assumed that list of CI
advantages, disadvantages would be applicable
to online IDEs running in the cloud

30
POTENTIAL AREAS OF RESEARCH


Smart CI
suggestion of the most important code quality issues
 prioritization of code quality report items




Inclusion of refactorings suggestion into CI builds
API refactorings
 Automatic migration to next versions of libraries




Increase adaptability of CI tools
automatic configuration of inspections
 detect when it is optimal to perform incremental build
and when it is optimal to perform full build


Detect when separate branch should be created to
configure separate CI build plan.
 “Refactor” CI practices for better scalability


31
MOST IMPORTANT RESEARCH PROBLEM


What is the problem?









Too much time and effort spent on "optimal configuration“ of
CI builds.
Even though there is a high chance that optimal
configuration exists, development teams are usually far from
optimal solution.
As a result, every team invents its own configuration, which
in vast majority of cases is not optimal enough for future
scaling.
Even though CI is good at saving effort and reducing risk for
teams of medium size, large projects have certain threshold
after which support of CI tools becomes too complex and
ambiguous.
After reaching certain project size CI does not scale
anymore (“Tailspin effect”)
32
MOST IMPORTANT RESEARCH PROBLEM


Why is it important?







Software become inherently complex
Software projects grow in size
But there is a certain cap for large projects when development
process cannot be effectively automated.
Therefore, more time, effort and resources are spent on
ambiguous routine activities causing problems with software
quality.
As projects grow in size, spending on software development
and support increase when project size reaches certain
threshold.
33
MOST IMPORTANT RESEARCH PROBLEM
 Possible

solutions:

Development of common rules and practices for effective
scalability and embedding those practices into CI tools.
 “Refactoring” of existing CI practices to common practice that
makes project scalable.
 …


34
RECOMMENDED READING
1. Continuous Integration: Improving Software Quality and
Reducing Risk by Paul M. Duvall, Steve Matyas, Andrew
Glover

35
RECOMMENDED READING
2. Continuous Delivery: Reliable Software Releases through
Build, Test, and Deployment Automation by By Jez
Humble, David Farley

36
RECOMMENDED READING
3. Release It!: Design and Deploy Production-Ready
Software by Michael T. Nygard

37
RECOMMENDED READING
4. Pragmatic Project Automation: How to Build, Deploy, and
Monitor Java Applications by Mark Clark

38
USEFUL LINKS
http://martinfowler.com/articles/continuousIntegratio
n.html - the main article about CI from Martin
Fowler
 http://www.infoq.com/news/2009/03/ContinuousDeployment - Beyond Continuous Integration:
Continuous Deployment
 http://radar.oreilly.com/2009/03/continuousdeployment-5-eas.html - Continuous Deployment in
5 easy steps
 http://www.proudlyserving.com/archives/2007/10/fe
ar_of_a_broke.html - „fear of the broken build‟ effect
 http://www.youbrokethebuild.com/ - great posters
created with the purpose of motivation people avoid
breaking the build


39

More Related Content

What's hot

Software development methodologies
Software development methodologiesSoftware development methodologies
Software development methodologies
Ankita Lachhwani
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
Hayim Makabee
 
+Software development methodologies
+Software development methodologies+Software development methodologies
+Software development methodologies
walid sassi
 
Agile archiecture iltam 2014
Agile archiecture   iltam 2014Agile archiecture   iltam 2014
Agile archiecture iltam 2014
Dani Mannes
 
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICECODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
ijseajournal
 
Unit1
Unit1Unit1
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-toolsIcsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Gail Murphy
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Joseph Yoder
 
Software Design
Software DesignSoftware Design
Software Design
Ahmed Misbah
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
Ambientia
 
We're all DevOps [EN]
We're all DevOps [EN]We're all DevOps [EN]
We're all DevOps [EN]
Mikhail Chinkov
 
Professional Software Development, Practices and Ethics
Professional Software Development, Practices and EthicsProfessional Software Development, Practices and Ethics
Professional Software Development, Practices and Ethics
Lemi Orhan Ergin
 
Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)lqi
 
software development methodologies and their application
software development methodologies and their applicationsoftware development methodologies and their application
software development methodologies and their application
madhusha udayangani
 
DevOps Hand On Workshop
DevOps Hand On WorkshopDevOps Hand On Workshop
DevOps Hand On Workshop
Technix-Pro Systems Consulting Ltd
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
Hayim Makabee
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
Afrasiyab Haider
 
devops online training in hyderabad
devops online training in hyderabaddevops online training in hyderabad
devops online training in hyderabad
DIGITALSAI1
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
KhalidQureshi31
 
Certified professional - DevOps Foundation (CP-DOF) course information
Certified professional - DevOps Foundation (CP-DOF) course informationCertified professional - DevOps Foundation (CP-DOF) course information
Certified professional - DevOps Foundation (CP-DOF) course information
DevOps++ Alliance
 

What's hot (20)

Software development methodologies
Software development methodologiesSoftware development methodologies
Software development methodologies
 
Reducing Technical Debt
Reducing Technical DebtReducing Technical Debt
Reducing Technical Debt
 
+Software development methodologies
+Software development methodologies+Software development methodologies
+Software development methodologies
 
Agile archiecture iltam 2014
Agile archiecture   iltam 2014Agile archiecture   iltam 2014
Agile archiecture iltam 2014
 
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICECODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
CODE REVIEW AND COOPERATIVE PAIR PROGRAMMING BEST PRACTICE
 
Unit1
Unit1Unit1
Unit1
 
Icsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-toolsIcsme 2021-keynote-creating-usable-and-useful-software-tools
Icsme 2021-keynote-creating-usable-and-useful-software-tools
 
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard WorkTaming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
Taming Big Balls of Mud with Diligence, Agile Practices, and Hard Work
 
Software Design
Software DesignSoftware Design
Software Design
 
Making software development processes to work for you
Making software development processes to work for youMaking software development processes to work for you
Making software development processes to work for you
 
We're all DevOps [EN]
We're all DevOps [EN]We're all DevOps [EN]
We're all DevOps [EN]
 
Professional Software Development, Practices and Ethics
Professional Software Development, Practices and EthicsProfessional Software Development, Practices and Ethics
Professional Software Development, Practices and Ethics
 
Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)Slides for Houston iPhone Developers' Meetup (April 2012)
Slides for Houston iPhone Developers' Meetup (April 2012)
 
software development methodologies and their application
software development methodologies and their applicationsoftware development methodologies and their application
software development methodologies and their application
 
DevOps Hand On Workshop
DevOps Hand On WorkshopDevOps Hand On Workshop
DevOps Hand On Workshop
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
Software development life cycle
Software development life cycleSoftware development life cycle
Software development life cycle
 
devops online training in hyderabad
devops online training in hyderabaddevops online training in hyderabad
devops online training in hyderabad
 
Devops online training ppt
Devops online training pptDevops online training ppt
Devops online training ppt
 
Certified professional - DevOps Foundation (CP-DOF) course information
Certified professional - DevOps Foundation (CP-DOF) course informationCertified professional - DevOps Foundation (CP-DOF) course information
Certified professional - DevOps Foundation (CP-DOF) course information
 

Viewers also liked

Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of changeSergii Shmarkatiuk
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-eggSergii Shmarkatiuk
 
CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...
Sergii Shmarkatiuk
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version ControlSergii Shmarkatiuk
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainingsSergii Shmarkatiuk
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment ManagementSergii Shmarkatiuk
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
Jeremy Coates
 

Viewers also liked (10)

Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of change
 
1.1 introduction to scm - xp and cm are chicken-and-egg
1.1   introduction to scm - xp and cm are chicken-and-egg1.1   introduction to scm - xp and cm are chicken-and-egg
1.1 introduction to scm - xp and cm are chicken-and-egg
 
CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...CS589 paper presentation - What is in unison? A formal specification and refe...
CS589 paper presentation - What is in unison? A formal specification and refe...
 
05 - Merge Management
05 - Merge Management05 - Merge Management
05 - Merge Management
 
03 - Continuous Integration
03 - Continuous Integration03 - Continuous Integration
03 - Continuous Integration
 
01 - Introduction to Version Control
01 - Introduction to Version Control01 - Introduction to Version Control
01 - Introduction to Version Control
 
1.0 about software configuration management trainings
1.0   about software configuration management trainings1.0   about software configuration management trainings
1.0 about software configuration management trainings
 
02 - Build and Deployment Management
02 - Build and Deployment Management02 - Build and Deployment Management
02 - Build and Deployment Management
 
04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 

Similar to Continuous integration for se group meeting

Continuous Integration Introduction
Continuous Integration IntroductionContinuous Integration Introduction
Continuous Integration Introduction
Fáber D. Giraldo
 
DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)
Ahmed Misbah
 
DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
MoogleLabs default
 
DevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile SuccessDevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile Success
Elina619459
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approach
FrancisXavierInyanga
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
Mohamed Samy
 
DevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile SuccessDevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile Success
Elina619459
 
Introduction to DevOps in Cloud Computing.pptx
Introduction to DevOps in Cloud Computing.pptxIntroduction to DevOps in Cloud Computing.pptx
Introduction to DevOps in Cloud Computing.pptx
LAKSHMIS553566
 
OpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
OpenTuesday: Aktuelle Standards der agilen SoftwareentwicklungOpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
OpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
Digicomp Academy AG
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
Ivan Porta
 
Dev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference MelbourneDev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference Melbourne
Mirco Hering
 
SCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPSSCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPS
G R VISHAL
 
Enterprise DevOps and the Modern Mainframe Webcast Presentation
Enterprise DevOps and the Modern Mainframe Webcast PresentationEnterprise DevOps and the Modern Mainframe Webcast Presentation
Enterprise DevOps and the Modern Mainframe Webcast Presentation
Compuware
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
Mujahed Al-Tahle
 
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
Erez PEDRO
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
Hui (Henry) Chen
 
Top 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debtTop 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debt
Sparity1
 
Back To Basics
Back To BasicsBack To Basics
Back To Basics
kamalikamj
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
KJR
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systems
Len Bass
 

Similar to Continuous integration for se group meeting (20)

Continuous Integration Introduction
Continuous Integration IntroductionContinuous Integration Introduction
Continuous Integration Introduction
 
DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)DevOps for absolute beginners (2022 edition)
DevOps for absolute beginners (2022 edition)
 
DevOps: Age Of CI/CD
DevOps: Age Of CI/CDDevOps: Age Of CI/CD
DevOps: Age Of CI/CD
 
DevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile SuccessDevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile Success
 
Introduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approachIntroduction to DevSecOps. An intuitiv approach
Introduction to DevSecOps. An intuitiv approach
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
DevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile SuccessDevOps in Software Development | Streamlining Processes for Agile Success
DevOps in Software Development | Streamlining Processes for Agile Success
 
Introduction to DevOps in Cloud Computing.pptx
Introduction to DevOps in Cloud Computing.pptxIntroduction to DevOps in Cloud Computing.pptx
Introduction to DevOps in Cloud Computing.pptx
 
OpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
OpenTuesday: Aktuelle Standards der agilen SoftwareentwicklungOpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
OpenTuesday: Aktuelle Standards der agilen Softwareentwicklung
 
How Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivityHow Azure DevOps can boost your organization's productivity
How Azure DevOps can boost your organization's productivity
 
Dev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference MelbourneDev ops in agile - 1st Conference Melbourne
Dev ops in agile - 1st Conference Melbourne
 
SCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPSSCALABLE CI CD DEVOPS
SCALABLE CI CD DEVOPS
 
Enterprise DevOps and the Modern Mainframe Webcast Presentation
Enterprise DevOps and the Modern Mainframe Webcast PresentationEnterprise DevOps and the Modern Mainframe Webcast Presentation
Enterprise DevOps and the Modern Mainframe Webcast Presentation
 
intro to DevOps
intro to DevOpsintro to DevOps
intro to DevOps
 
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...CodeValue Architecture Next 2018 - Executive track  dilemmas and solutions in...
CodeValue Architecture Next 2018 - Executive track dilemmas and solutions in...
 
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
NYIT DSC/ Spring 2021 - Introduction to DevOps (CI/CD)
 
Top 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debtTop 10 clean code practices to reduce technical debt
Top 10 clean code practices to reduce technical debt
 
Back To Basics
Back To BasicsBack To Basics
Back To Basics
 
TMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael PalotasTMF2014 CI-CD Workshop Michael Palotas
TMF2014 CI-CD Workshop Michael Palotas
 
Dev ops and safety critical systems
Dev ops and safety critical systemsDev ops and safety critical systems
Dev ops and safety critical systems
 

More from Sergii Shmarkatiuk

CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentation
Sergii Shmarkatiuk
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentation
Sergii Shmarkatiuk
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual Consistency
Sergii Shmarkatiuk
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell usSergii Shmarkatiuk
 
Breath of life
Breath of lifeBreath of life
Breath of life
Sergii Shmarkatiuk
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration managementSergii Shmarkatiuk
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
Sergii Shmarkatiuk
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторийSergii Shmarkatiuk
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 

More from Sergii Shmarkatiuk (9)

CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentation
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentation
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual Consistency
 
1.2 introduction to scm - what does version number tell us
1.2   introduction to scm - what does version number tell us1.2   introduction to scm - what does version number tell us
1.2 introduction to scm - what does version number tell us
 
Breath of life
Breath of lifeBreath of life
Breath of life
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration management
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 

Recently uploaded

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
Product School
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Product School
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
Paul Groth
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
Jemma Hussein Allen
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
Elena Simperl
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
g2nightmarescribd
 

Recently uploaded (20)

Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
Unsubscribed: Combat Subscription Fatigue With a Membership Mentality by Head...
 
UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3UiPath Test Automation using UiPath Test Suite series, part 3
UiPath Test Automation using UiPath Test Suite series, part 3
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...Designing Great Products: The Power of Design and Leadership by Chief Designe...
Designing Great Products: The Power of Design and Leadership by Chief Designe...
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
The Future of Platform Engineering
The Future of Platform EngineeringThe Future of Platform Engineering
The Future of Platform Engineering
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
Generating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using SmithyGenerating a custom Ruby SDK for your web service or Rails API using Smithy
Generating a custom Ruby SDK for your web service or Rails API using Smithy
 

Continuous integration for se group meeting

  • 2. PRESENTATION PLAN 1. State of the practice 1. 2. 3. 4. 5. 6. 7. 8. 2. 3. 4. 5. 6. What is continuous integration? Why do development teams need continuous integration? Prerequisites for continuous integration process General CI workflow How does continuous integration affect development process? When CI is not effective? Short tools overview Benefits of using CI Problems with current state of the practice Research ideas Future of CI CI and COPE Recommended readings 2
  • 3. WHAT IS CONTINUOUS INTEGRATION? Widely used software engineering practice development process automation technique Approach helping to reduce risks 3
  • 4. WHY DO TEAMS NEED CONTINUOUS INTEGRATION?  Martin Fowler: … team integrate their work frequently, … leading to multiple integrations per day. … this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.  CI is the one of the XP practices  Allows team to get fresh latest build regularly 4
  • 5. PREREQUISITES FOR CONTINUOUS INTEGRATION Not everything you can integrate continuously 5
  • 6. PREREQUISITES FOR CONTINUOUS INTEGRATION VCS system CI tool Separate server (usually) Build automation Selftesting app (unit-tests) 6
  • 7. GENERAL CI WORKFLOW Build (compilation, unit-testing, db integration, etc) Committing latest changes Update by scheduler (on CI server) Application is ready 7
  • 8. GENERAL CI WORKFLOW changes detected update commit build & deploy ~ repository deployment server continuous integration server 8
  • 9. TOOLS CLASSIFICATION CI tools Build management tools Unit testing tools Inspection tools • Code coverage analysis • Static analysis (syntax check, code dependencies) • Copy/paste detectors 10 Documentation generation tools
  • 10. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl  XInc 11
  • 11. CI TOOLS Too many tools  All are great  All have the same principle  But each has specific features  Diagrams, metrics, reporting Interface, usability Integration with SCM tools Notification Distributed builds Different ALM approaches 12
  • 12. CONTINUOUS INTEGRATION – PART OF SDLC Initiation Requirements development & management Design Testing Integration Implementation Deployment Maintenance & support Utilization 13
  • 13. CONTINUOUS INTEGRATION – PART OF SDLC Initiation Requirements development & management Design Basic continuous integration Testing Integration Implementation Deployment Maintenance & support Utilization 14
  • 14. CONTINUOUS INTEGRATION – PART OF SDLC Initiation Requirements development & management Design Basic continuous integration Testing Integration Implementation Maintenance & support Utilization Extended build management Deployment 15
  • 17. INSPECTIONS TOOLS. TEST COVERAGE Cobertura  Atlassian Clover  jTest  JCoverage  CodeCover  EMMA  Parasoft Insure++  Ncover  Xdebug  Coverage.py  18
  • 18. INSPECTIONS TOOLS. TEST COVERAGE Cobertura  Atlassian Clover  jTest  JCoverage  CodeCover  EMMA  Parasoft Insure++  Ncover  Xdebug  Coverage.py  Java C++ C# PHP 19 Python
  • 19. INSPECTIONS TOOLS. STATIC ANALYSIS  PMD  FindBugs  JLint  FxCop  Checkstyle  ReSharper  PHP_CodeSniffer  Yasca  NDepend 20
  • 20. INSPECTIONS TOOLS. COPY/PASTE DETECTORS CPD (Copy paste detector) Checkstyle Simian Jplag Atomiq Clone digger PBA 21
  • 22. OTHER TOOLS Source code metrics (loc) Dead code detectors Profiling … 23
  • 23. BENEFITS OF USING CI         Reduces risks of problems with source code integration by stimulating team members to perform integration early and often. Provides automated reports about code quality. Increases visibility of current project status and project progress by providing shared reports available to all team members. Provides historical data on source code quality and metrics. Always contains last fresh build that could be used for deployment, testing or other purposes. Reduces number of routine repetitive activities by automating part of development lifecycle. Runs costly inspections on the server (in contrast to inspections available in modern IDEs) Stimulates developers to write better source code 24
  • 24. BENEFITS OF USING CI FOR RESEARCH Reproducible results of research 25
  • 25. PROBLEMS  “Don‟t break the build” obsession. This rule undermines cooperation, transparency and trust between team members  Root cause of the problem is failure to draw apply different CI practices for different SDLC stages (development and release)   Necessity to instantiate CI build plan for separate branch/codebase Some branches require instantiation of CI build plan, some don‟t  Usually there is no rule specifying whether branch should have its own CI build plan configuration  Benefits of CI are different for different SDLC stages  Necessity to write and support build scripts   Very often it happens that activity of supporting build scripts is not a priority. 26
  • 26. PROBLEMS Even though builds run automatically, somebody needs to support and configure CI server if project grows in size.  Continuous deployment and continuous release seem to be a good idea, but do not usually occur in practice due to lack of flexibility and configuration complexity.  Teams that use CI are forced to make some premature commitments that are difficult to change later (project structure, deployments configuration, etc).  27
  • 27. WHEN CI IS NOT EFFECTIVE?  Pure DVCS (without central repo)  Experimental development  Small projects  Interpreted languages without unit-tests  When database is being changed too often  Types of projects  Documentation (BA, etc)  DB  Support & maintenance 28
  • 28. WHY SHOULD WE USE CI IF IDES ALREADY HAS EVERYTHING WE NEED?  Modern IDEs already have:        embedded build systems unit-tests static inspections dynamic inspections code coverage metrics documentation generation … 29
  • 29. WHY SHOULD WE USE CI IF IDE ALREADY HAS EVERYTHING WE NEED? Think about continuous integration as part of your IDE running in the cloud Therefore, it is assumed that list of CI advantages, disadvantages would be applicable to online IDEs running in the cloud 30
  • 30. POTENTIAL AREAS OF RESEARCH  Smart CI suggestion of the most important code quality issues  prioritization of code quality report items   Inclusion of refactorings suggestion into CI builds API refactorings  Automatic migration to next versions of libraries   Increase adaptability of CI tools automatic configuration of inspections  detect when it is optimal to perform incremental build and when it is optimal to perform full build  Detect when separate branch should be created to configure separate CI build plan.  “Refactor” CI practices for better scalability  31
  • 31. MOST IMPORTANT RESEARCH PROBLEM  What is the problem?      Too much time and effort spent on "optimal configuration“ of CI builds. Even though there is a high chance that optimal configuration exists, development teams are usually far from optimal solution. As a result, every team invents its own configuration, which in vast majority of cases is not optimal enough for future scaling. Even though CI is good at saving effort and reducing risk for teams of medium size, large projects have certain threshold after which support of CI tools becomes too complex and ambiguous. After reaching certain project size CI does not scale anymore (“Tailspin effect”) 32
  • 32. MOST IMPORTANT RESEARCH PROBLEM  Why is it important?      Software become inherently complex Software projects grow in size But there is a certain cap for large projects when development process cannot be effectively automated. Therefore, more time, effort and resources are spent on ambiguous routine activities causing problems with software quality. As projects grow in size, spending on software development and support increase when project size reaches certain threshold. 33
  • 33. MOST IMPORTANT RESEARCH PROBLEM  Possible solutions: Development of common rules and practices for effective scalability and embedding those practices into CI tools.  “Refactoring” of existing CI practices to common practice that makes project scalable.  …  34
  • 34. RECOMMENDED READING 1. Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall, Steve Matyas, Andrew Glover 35
  • 35. RECOMMENDED READING 2. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by By Jez Humble, David Farley 36
  • 36. RECOMMENDED READING 3. Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard 37
  • 37. RECOMMENDED READING 4. Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Applications by Mark Clark 38
  • 38. USEFUL LINKS http://martinfowler.com/articles/continuousIntegratio n.html - the main article about CI from Martin Fowler  http://www.infoq.com/news/2009/03/ContinuousDeployment - Beyond Continuous Integration: Continuous Deployment  http://radar.oreilly.com/2009/03/continuousdeployment-5-eas.html - Continuous Deployment in 5 easy steps  http://www.proudlyserving.com/archives/2007/10/fe ar_of_a_broke.html - „fear of the broken build‟ effect  http://www.youbrokethebuild.com/ - great posters created with the purpose of motivation people avoid breaking the build  39

Editor's Notes

  1. Рад приветствовать вас на очередном тренинге серии, посвященной конфигурационному менеджменту. И мы будем рассматривать Continuous integration.Continuous integration – очень заезженная тема. Об этом говорят все, кому не лень. Практика continuous integration стала практически незаменимой в большинстве проектов и вместе с этим приобрела привкус «попсовости» и обсосанности со всех сторон. Но тем не менее, всё равно встречаются такие люди, которые не знают об этой практике. Дошли слухи о том, что в Днепропетровске НИКТО кроме того, что вообще не использует CI, так еще и не знает о том, что это такое! Если кто-то среди присутствующих есть из Днепропетровска, можете поднять руку и сказать пару слов в свою защиту. Кроме того, что я рассказываю о том же, о чем и практически все остальные пропагандисты (инструменты, workflow), я еще и попробую вдохнуть новую жизнь в понятие непрерывной интеграции показав некоторую доселе невидимую грань. екОсобенностью данного тренинга является то, что я его провожу впервые. Остальные тренинги серии в том или ином виде уже достигали внимания слушателей. Этот же тренинг я подготовил совсем недавно. Так что должен предупредить о том, что я не уверен насчет того, вложимся ли мы в отведенные 1.5 часа времени.
  2. Мы рассмотрим следующие вопросы:Что такое CIЗачем это вообще надоБез чего CI невозможенСамый общий workflow – действия, входящие в число стандартных при организации процесса непрерывной интеграции Как CI влияет на весь процесс разработкиИнструменты и их особенностиОписание случаев, когда CI не нужен или неэффективенНовая грань непрерывной интеграции – чего не хватает в функциональности и базовых идеях существующих инструментовСвязь непрерывной интеграции и модели зрелости процессов.
  3. Есть несколько смежных формулировок что такое непрерывная интеграция. В первой лекции я говорил пару слов об инженерных практиках и о том, что это объединение двух вещей: 1) идей по поводу того, как разрабатывать ПО эффективно, 2) инструментов, реализующих эти идеи. Непрерывная интеграция – это как раз такая инженерная практика. Это также подход, помогающий уменьшить риски при разработке ПО. В списке рекомендованной литературы есть книга o CI, которая так и называется – Improve software quality and reducing risksНепрерывная интеграция – это еще один шаг на пути к автоматизации процессов разработки. Этот шаг следующий после автоматизации сборок.
  4. Главным идеологом непрерывной интеграции является Мартин Фаулер. Поэтому на вопрос зачем нам нужна непрерывная интеграция я отвечу его словами:Мартин плавно подводит к ответу, говоря о том, в той ситуации, когда команда интегрирует свою работу часто, причем когда частота эта достигает иногда нескольких интеграций в деньнепрерывная интеграция позволяет избежать интеграционных проблем, что ведет кразработке целостного ПО быстрееКроме того, CI – это одна из практик экстремального программирования, идеологом которого также является Мартин Фаулер. Причем, это единственная практика ХР, которая входит в число практик конфигурационного менеджмента. Так как экстремальное программирование претендует на то, чтобы быть полноценной методологией разработки, факт упоминания CI среди практик указывает на ее важность. Опустив из рассмотрения, риски, качество и прочую невидимую лабудень, которую сложно пощупать, перейдем к тому, что же будет видимым результатом непрерывной интеграции. И таким видимым результатом является постоянное наличие свежих сборок приложения. Без нашего вмешательства.
  5. Не всё можно совместить так, чтобы составные части успешно работали вместе. Причем даже если это можно сделать вручную, не всегда процесс интеграции можно автоматизировать. Как мы уже знаем, автоматизация интеграции – это ключ к возможности выполнять интеграцию непрерывно (continuously).
  6. нужно выполнить несколько условий для того, чтобы практика непрерывной интеграции успешно и (что немаловажно) полноценно выполнялась, соответствуя изначальной идее и концепции.Исходный код должен храниться в системе контроля версий.Сборки должны быть автоматизированы. Кроме этого, довольно общего условия, я рекомендовал бы использовать специальный тип сборок – интеграционный. К сожалению, я не смог подробно на этом моменте остановиться во время рассказа об автоматизации сборок. Очень часто сборки автоматизируются единственно с целью именно непрерывной интеграции. Но нужно этот тип сборок отдельно выделять и не путать с остальными, ведь не единой непрерывной интеграцией жив разработчик. В идеалетакжедолжноиспользоватьсяюнит-тестирование, непосредственное выполнение которого входит в задачу автоматизации сборок.Совершенно замечательно, если для выполнения интеграции используется отдельная рабочая станция. И, конечно же, нам понадобится инструмент для выполнения непрерывной интеграции. Такой инструмент будет называться сервером непрерывной интеграции. Хотя, нужно заметить, что это не обязательно должна быть отдельная рабочая станция. (Server, serve – обслуживать)
  7. Как же работает непрерывная интеграция? Как этот процесс организуется и что сюда входит? Процесс начинается тогда, когда разработчики добавляют изменения в репозиторий исходного кода. Сервер непрерывной интеграции отслеживает то, что произошли изменения в репозитории и автоматически последняя актуальная версия исходного кода попадает в рабочую директорию CI-сервера. Предполагается, что CI-сервер знает, где среди всей кучи исходников искать билд-скрипт. Он находит его и запускает. После выполнения всех действий, входящих в автоматизированную сборку приложение оказывается готовым для использования/тестирования/еще чего-то. (Опрос: для чего готово приложение после выполнения непрерывной интеграции?)
  8. Те же яйца – вид сбоку. На первом изображении - репозиторий исходного кода. На втором – файловая система сервера непрерывной интеграции. Это рабочая копия. Исходники обновляются именно здесь. Средибольшогоколичествафайлов находится билд-скрипт. Который используется для запуска сборки и развертывания. Приложение попадает в некоторую директорию на сервере развертывания. Можно запутаться в обилии мест в которых можно найти ресурсы нашего проекта. Но суть в том, что все эти места нужны для разных целей. Вот
  9. Расширенная непрерывная интеграция и управление сборками означают, что инструменты облегчают кроме всего прочего еще и тестирование (для разных платформ), а также развертывание приложения. Тоже на разные платформы. Это то, что касается подходу к управлению жц приложения. Разные инструменты по разному покрывают фазы жц. ОПРОС на тему использования инструментов непрерывной интеграции
  10. First 5 – java Insure –c++Ncover - .netXdebug – phpCoverage.py - pythonThere are code coverage tools embedded into the IDE: Netbeans, IntelliJ IDEA, eclipse, VS (CTC++, TestDriven.NET, etc)
  11. First 5 – java Insure –c++Ncover - .netXdebug – phpCoverage.py - pythonThere are code coverage tools embedded into the IDE: Netbeans, IntelliJ IDEA, eclipse, VS (CTC++, TestDriven.NET, etc)
  12. Other tools:Jdepend, PHP_Depend, PHP-sat, LintPyLintPyCheckerRATS – multilingual
  13. CPD is the plugin for PMDCloneAnalyzerCloneDRConQATCPMinerCCFinder
  14. Непрерывная интеграция – замечательная практика, решает кучу проблем.Но, тем не менее, есть случаи, когда использование CI оказывается не совсем эффективным. Такими случаями являются:Использование распределенных систем контроля версий. DVCS предполагают, что иногда один из репозиториев выделяется в качестве центрального. Но кроме того, что это происходит не всегда, в центральный изменения могут поступать не так часто (вспомним принцип commit every day).CI часто бывает совсем не нужна для экспериментальной разработки (одно из проявлений экспериментальных разработок – это использование распределенного контроля версий, а мы уже сказали, что для DVCS CI не совсем эффективен)И для маленьких проектов. В этих двух случаях CI требует несопоставимо много накладных расходов на поддержку и организацию.Из тренинга, посвященного управлению сборками и развертываниями вы помните о том, что приложение делится на функциональную часть и часть данных. Для данных используется совершенно другой подход к конфигурационному менеджменту, нежели для функциональной части – используется интеграция баз данных. И совершенно бессмысленным становится использование CI для интеграции баз данных.Для некоторых типов проектов, не связанных с разработкой, CI не нужен.