SlideShare ist ein Scribd-Unternehmen logo
1 von 66
CONTINUOUS INTEGRATION
TRAINING GOALS


  Show that there is no way
 present-day project could be
 successful without usage of
continuous integration practice




                                  Establish connection between
                                    CMMI product integration
                                  process area and continuous
                                       integration practice


                                                                 2
TRAINING PLAN

1.   What is continuous integration?
2.   Why do we need continuous integration?
3.   Prerequisites for continuous integration process
4.   General CI workflow
5.   How does continuous integration affect our
     development process?
6.   Tools and their features
7.   When CI is not effective?
8.   We have "true CI". What next?
9.   CI and CMMI product integration process area
                                                        3
INTRODUCTION TO CONTINUOUS
    INTEGRATION
4   Basic ideas
WHAT IS CONTINUOUS
INTEGRATION?




                     5
WHAT IS CONTINUOUS
INTEGRATION?




•   Integration is when you make everything work together
•   Continuous is when you make everything work together very often     6
•   You would go mad if you had to do it manually
•   That‟s why it is not about manual actions, it is about automation
WHAT IS CONTINUOUS
INTEGRATION?



                Software
               engineering
                 practice



      Another step
         to the          Approach
      development        helping to
        process         reduce risks
       automation
                                       7
WHY DO WE 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 to have fresh latest build
                                                             8
PREREQUISITES FOR CONTINUOUS
INTEGRATION

Not everything   you can continuously integrate




                                                  9
PREREQUISITES FOR CONTINUOUS
INTEGRATION

               Single source
                 code repo
               (VCS system)


                                    Build
   CI tool
                                 automation




   Separate                    Self-testing
    server                      app (unit-    10
   (usually)                      tests)
GENERAL CI WORKFLOW



                                    Build
Committing                   (compilation, unit-
  latest                         testing, db
 changes                      integration, etc)




               Update by                           Application is
             scheduler (on                            ready
               CI server)


                                                                    11
GENERAL CI WORKFLOW

                changes
                detected

                                            build &
                             update         deploy
commit
                   ~



         repository                            deployment server


                      continuous integration server
                                                                   12
GENERAL CI WORKFLOW




          Check
        modification




                         Build
                       application




                                     13
TOOLS
14   Instruments for continuous integration and their
     features
TOOLS CLASSIFICATION
CI tools

Build management tools

Unit testing tools

Inspection tools
• Code coverage analysis
• Static analysis (syntax check, code
  dependencies)
• Copy/paste detectors
                                        15
Documentation generation tools
CI TOOLS

              CruiseControl
              CruiseControl.NET
              CruiseControl.rb
              JetBrains TeamCity
              Apache Hudson
              Apache Continuum
              Atlassian Bamboo
              FinalBuilder
              phpUnderControl
                                    16
              XInc
CI TOOLS

                 CruiseControl
                 CruiseControl.NET
                 CruiseControl.rb
                 JetBrains TeamCity
                 Apache Hudson
Most common, flexible, configurable, easy to
               Apache Continuum
  use, de facto choice for Java projects
                 Atlassian Bamboo
                 FinalBuilder
                 phpUnderControl
                                               17
                 XInc
CI TOOLS

                 CruiseControl
                 CruiseControl.NET
                 CruiseControl.rb
                 JetBrains TeamCity
                 Apache Hudson
Most common, flexible, configurable, easy to
               Apache Continuum
  use, de facto choice for .NET projects
                 Atlassian Bamboo
                 FinalBuilder
                 phpUnderControl
                                               18
                 XInc
CI TOOLS

                    CruiseControl
                    CruiseControl.NET
                    CruiseControl.rb
                    JetBrains TeamCity
                    Apache Hudson
Most successful adaptation of CI principle for the
                  Apache Continuum
         interpreted language (Ruby)
                    Atlassian Bamboo
                    FinalBuilder
                    phpUnderControl
                                                     19
                    XInc
CI TOOLS

                     CruiseControl
                     CruiseControl.NET
                     CruiseControl.rb
                     JetBrains TeamCity
                     Apache Hudson
One of the best CI tools:
                    Apache Continuum
• pre-tested commit
• build agents      Atlassian Bamboo

• multi-platform builds
                    FinalBuilder
• build dependencies
                    phpUnderControl
• comprehensive statistics and reporting   20
                     XInc
CI TOOLS

                    CruiseControl
                    CruiseControl.NET
                    CruiseControl.rb
Tagging after successful build, distributed builds
                    JetBrains TeamCity
                    Apache Hudson
                    Apache Continuum
                    Atlassian Bamboo
                    FinalBuilder
                    phpUnderControl
                                                     21
                    XInc
CI TOOLS

               CruiseControl
               CruiseControl.NET
               CruiseControl.rb
           Distributed builds
               JetBrains TeamCity
               Apache Hudson
               Apache Continuum
               Atlassian Bamboo
               FinalBuilder
               phpUnderControl
                                     22
               XInc
CI TOOLS

                     CruiseControl
                     CruiseControl.NET
                     CruiseControl.rb
Focused on processJetBrains TeamCity just a feature
                 of building, CI is

                     Apache Hudson
                     Apache Continuum
                     Atlassian Bamboo
                     FinalBuilder
                     phpUnderControl
                                                  23
                     XInc
CI TOOLS

                 CruiseControl
                 CruiseControl.NET
                 CruiseControl.rb
  CI tools written in PHP for PHP projects
                 JetBrains TeamCity
                 Apache Hudson
                 Apache Continuum
                 Atlassian Bamboo
                 FinalBuilder
                 phpUnderControl
                                             24
                 XInc
CI TOOLS

                     CruiseControl
                     CruiseControl.NET
                     CruiseControl.rb
Yet another CI tool written in TeamCity PHP projects
                   JetBrains PHP for

                     Apache Hudson
                     Apache Continuum
                     Atlassian Bamboo
                     FinalBuilder
                     phpUnderControl
                                                   25
                     XInc
CI TOOLS

 Too many tools
 All are great

 All have the same principle

 But each has specific features




Diagrams, metrics, reporting   Integration with SCM tools         Notification




     Interface, usability          Distributed builds       Different ALM approaches
                                                                                       26
CI TOOLS. ALM APPROACH

               Requirements
  Initiation   development &      Design
                management




   Testing      Integration    Implementation




               Maintenance &
 Deployment                      Utilization    27
                  support
CI TOOLS. ALM APPROACH

               Requirements
  Initiation   development &                   Design
                management

               Basic continuous integration



   Testing       Integration            Implementation




               Maintenance &
 Deployment                                   Utilization   28
                  support
CI TOOLS. ALM APPROACH

                  Requirements
   Initiation     development &                   Design
                   management

                  Basic continuous integration



    Testing         Integration            Implementation


 Extended build
  management

                  Maintenance &
 Deployment                                      Utilization   29
                     support
BUILD TOOLS

                 Ant
                 NAnt
                 MSBuild
                 Maven
                 Make
                 Phing
                 Rake
                 …
                            30
BUILD TOOLS

                       Ant
                       NAnt
                       MSBuild
                       Maven
 Most common, flexible, configurable, easy to
                    Make
   use, de facto choice for Java projects
                    Phing

                       Rake
                       …
                                                31
BUILD TOOLS

                       Ant
                       NAnt
                       MSBuild
                       Maven
 Most common, flexible, configurable, easy to
                    Make
   use, de facto choice for .NET projects
                    Phing

                       Rake
                       …
                                                32
BUILD TOOLS

                       Ant
                       NAnt
                       MSBuild
                       Maven
                      Make
de facto case for Visual Studio and TFS users
                       Phing
                       Rake
                       …
                                                33
BUILD TOOLS

                      Ant
Build management + dependencies management
                       NAnt
  for Java projects. Introduced POM concept.
                      MSBuild
                      Maven
                      Make
                      Phing
                      Rake
                      …
                                               34
BUILD TOOLS

                      Ant
   Standard de facto for UNIX applications
                     NAnt

                      MSBuild
                      Maven
                      Make
                      Phing
                      Rake
                      …
                                             35
BUILD TOOLS

                       Ant
Implementation of build management tool in PHP
                       NAnt
               for PHP projects
                       MSBuild
                       Maven
                       Make
                       Phing
                       Rake
                       …
                                                 36
BUILD TOOLS

                        Ant
Implementation of build management tool in Ruby
                       NAnt
               for Ruby projects
                        MSBuild
                        Maven
                        Make
                        Phing
                        Rake
                        …
                                              37
UNIT TESTING TOOLS

                   Junit

                   NUnit

                   CppUnit

                   PHPUnit

                   SimpleTest

                   JSUnit

                   J3Unit       38
INSPECTIONS TOOLS.
TEST COVERAGE

 Cobertura
 Atlassian Clover

 jTest

 JCoverage

 CodeCover

 EMMA

 Parasoft Insure++

 Ncover

 Xdebug
                      39
 Coverage.py
INSPECTIONS TOOLS.
TEST COVERAGE

 Cobertura
 Atlassian Clover

 jTest

 JCoverage
                      Java
 CodeCover

 EMMA

 Parasoft Insure++     C++
 Ncover                  C#
 Xdebug                PHP
                           40
 Coverage.py         Python
INSPECTIONS TOOLS.
STATIC ANALYSIS

 PMD
 FindBugs
 JLint
 FxCop
 Checkstyle
 ReSharper
 PHP_CodeSniffer
 Yasca
                     41
 NDepend
INSPECTIONS TOOLS.
COPY/PASTE DETECTORS

CPD  (Copy paste detector)
Checkstyle
Simian
Jplag
Atomiq
Clone digger
PBA                          42
DOCUMENTATION GENERATION
TOOLS

  Doxygen

    JavaDoc

        NDoc

        CppDoc

        phpDocumentor

    pyDoc

  RDoc                     43
OTHER TOOLS



    Source code     Dead code
    metrics (loc)   detectors


       Profiling       …

                                44
CI IN EPAM MICROSOFT
TECHNOLOGIES DIVISION
Project     Project Product Primary   CCNET   Code Analysis    Unit        Test         Copy &       Automat    Automate
            Language                          tools            testing     coverage     Paste        e build    deploymen
                                                                           tools        detectors    delivery   t


ACT-INT     C#                        x       -                x (Unit)    -            -            -          -

ACT-LVI     C#                        x       x (FxCop, PBA)   x           -            -            -          -

CON-GEN     C#, ASP.NET               -       -                -           -            -            -          -


EPM-UTIL    C#, ASP.NET               x       x (FxCop,PBA)    x (NUnit)   x (NCover)   x (Simian)   +          +

ESS-MSFT                              -       -                -           -            -            -          -

FSTIDX      C#, ASP.NET               x       x (PBA)          x           -            -            -          -

ICPDP       C#                        x       -                -           -            -            -          -

LOGIDEX     Java, J#, C#, ASP.NET     -       -                -           -            -            -          -

LSEEC       C#                        x       x (FxCop, PBA)   x (NUnit)   -            x (Simian)   -          +

MIS-OPC     C#                        x       x                x           -            -            -          -

MIS-SPR     C#                        x       x                x (Nunit)   x            -            -          -

MultAPI     VBScript                  -       -                -           -            -            -          -

MultCons    C#                        x       x (FxCop, PBA)   -           -            x (Simian)   -          -

MultData    C#, C++, HTML, VB         x       -                x           -            -            -          -

MultEDG     C++, C#                   -       x (FxCop)        x           -            -            x          -

Mult-IPAS   C#, C++                   x       x (FxCop)        -           -            -            -          -

MultRIN     C#                        -       -                x           -            -            -          x

Mult-Torn   C++                       -       -                x           -            -            -          -
CI IN EPAM MICROSOFT
TECHNOLOGIES DIVISION
Project           Project Product Primary   CCNET   Code Analysis   Unit        Test       Copy &       Automat    Automate
                  Language                          tools           testing     coverage   Paste        e build    deploymen
                                                                                tools      detectors    delivery   t

RTRS-AAAM         C#                        -       -               -           -          -            -          -

RTRS-MTST         C#, ASP.NET               -       x (FxCop)       -           -          -            -          -

RTRS-RKSD         C#                        x       x               -           -          x (Simian)   -          -

RTRS-RKWM         C#                        -       x               -           -          -            -          -

TAK-PBLD          C#                        -       x (FxCop)       x (Nunit)   -          -            -          -

TRR-ODC (O2I)     C#, ASP.NET               x       x (FxCop,PBA)   x (Nunit)   -          x (Simian)   -          -

TRR-ODC (SapSn)   C#                        x       x (FxCop,PBA)   -           -          x (Simian)   -          -




                                                                                                                        46
MOST TYPICAL QUESTIONS

    All the above-described info sounds cool. I
  feel that it might be useful in my project. But I
  am not sure I can find enough resources to start
  and support this activity.
     EPM-BET project is started long time ago for this
  purpose. It provides corresponding resources and
  support
     There are too many different tools. They are
  all different. How could I use them both
  independently and all at once?
     I recommend to use AgileSCM approach. It uses
                                                          47
  unified versions numbering which could be used by
  any mentioned tool.
ADVANCED CONTINUOUS
     INTEGRATION
48   More complex issues related to the continuous
     integration
HOW DOES CI AFFECT
DEVELOPMENT PROCESS?


 Commit   policy (mainlines are on the watch)
 Don't break the build rule (make local build)

 Everyone commits to the mainline everyday

 Keeping the build fast

   Run fast tests first
 We can automate deployment

   Build is primary, deployment is secondary
 Continuous design
                                                  49
“DON’T BREAK THE BUILD”
RULE
   Test code properly before
    checking in
   Avoid depending on a local
    resource that is not under
    version control or does not
    exist on the target computer.
   Write tests to cover common
    problems
   Make sure local
    inspections were run
    successfully
   Broken build in most cases
    means that it is impossible or
    not recommended to use
    corresponding codebase until
    it has been fixed                50
“DON’T BREAK THE BUILD”
OBSESSION
   It is often impossible to
    reproduce integration
    problem without checking in.
   You might spend A LOT of
    time looking for a failure reason
    in someone‟s else module
   During that time you will be the
    one WHO FAILED THE BUILD
   If you want to avoid such
    situations, every checking in
    becomes a nightmare
   Attitude to the “don‟t break the
    build” rule may be a detector of
    how mature the team is.
                                        51
“DON’T BREAK THE BUILD”
OBSESSION. SOLUTION
 Nightly builds instead of
  builds „on commit‟
 Team needs more strict and
  less strict variations of the
  “don‟t break the build” rule
  during different SDLC
  phases
 There are architectural
  issues to pay attention to
 Sometimes several small
  projects should be started
  instead of one large
                                  52
 Build policy is to be
  developed
WHEN CI IS NOT EFFECTIVE?

 DVCS

 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                   53
WE HAVE "TRUE CI".
WHAT'S NEXT?

 Building  tags
 Separate builds having different maturity   
  levels                                          
 Codebase structure filtering

    Triggering build only for changes in
     specified list of folders
 Integration with issue tracking systems

 Different approach for different SDLC
                                              54
  phases
WE HAVE "TRUE CI".
      WHAT’S NEXT?
                 1.x.x                                              2.x.x
/trunk

 PA      1.x.0                    1.x.3           2.x.0
  A              1.x.1                    1.x.4       2.x.1
                                                                                                builds
  B                  1.x.2                                   1.x.5        2.x.2

                         /1.x.x
 AR                                                       1.0.0
 BR                                                               1.0.1
 RC                                                                       1.0.2 1.0.3           releases
 ST                                                                                     1.0.4
                                                                                                 56
                                           /1.0.x
WE HAVE "TRUE CI".
   WHAT’S NEXT?
                     1.x.x                                                                                                                        2.x.x
/trunk

            1.x.0.0 1.x.0.1   1.x.1.0 1.x.1.1   1.x.2.0   2.x.x.0 2.x.x.1   2.x.x.2   2.x.x.3   2.x.x.4   …         2.x.0.0 2.x.0.1            2.x.1.0 2.x.1.1
                                                                                                                                                                             integration (dev)

                                                                                                          2.x.0                     2.x.1                   2.x.2                      builds
                                                                                                                                                                                                                 CI server
         1.x.0 1.x.1 1.x.2                                        1.x.3                   1.x.4                                       1.x.5                                            builds
                                                           1.x.2.1 …         1.x.3.0 1.x.3.1          1.x.4.0 1.x.4.1   1.x.4.2     1.x.4.3                                  integration (dev)

                                  /1.x.x

                                                                                                                                                                                                                 CI server

                                                                              releases
                                                                                                                           1.0.0 1.0.1 1.0.2 1.0.3 1.0.4

                                                                     integration (rel)                                    1.0.x.0       1.0.0.0 1.0.0.1    1.0.1.0 1.0.1.1   1.0.2.0 1.0.2.1   1.0.3.0 1.0.3.1



                                                                                                                                                                                                                        57
                                                                                           /1.0.x
WHAT NEXT? VERSIONS
NUMBERING PATTERNS
                  N.x.x.L pilot integration
integration
                  N.x.K.L development integration
  N.?.?.L
                  N.M.x.L pre-release integration
                 N.M.K.L release integration
                                                                           2.0.x.0   2.0.x.1
                                                                                               2.0.0
                                  2.x.x.0   2.x.x.1    2.x.x.2   2.x.x.3   2.x.x.4
                                                                                     2.x.0        …




 …    1.x.1.0 1.x.1.1
                         1.x.2                                                       1.1.x.0
                                                                                               1.1.0
                                  1.x.2.0   1.x.2.1
                                                         1.x.3             1.x.3.0   1.x.3.1
                                                                                               1.x.4
     dev                rel
                                                                                                       58
     N.x           N.M                       1.0.x.0
                                                         1.0.0             1.0.0.0 1.0.0.1
                                                                                               1.0.1
59
CONCLUSION

 Thereis a lot of possibilities to make your
 continuous integration better:
     Several integration streamlines (not only
      trunk)
     Development and release integration
      streamlines
     Introduce version number consisting of four
      symbols
     Proper version number inheritance
     Integration of builds and releases
     …
CONCLUSION

 CI  is another SCM tool (practice)
 Middle size project should definitely
  have it.
 It is used mostly in agile world
 Agile SCM is the result of attempt to
  understand what version should have
  artifacts which are being built by CI
  server
AFTERWORD
62
RECOMMENDED READING
1. Continuous Integration: Improving Software Quality and
   Reducing Risk by Paul M. Duvall, Steve Matyas, Andrew
   Glover




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




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




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




                                                             66
USEFUL LINKS
   http://martinfowler.com/articles/continuousIntegration.ht
    ml - the main article about CI from Martin Fowler
   http://www.infoq.com/news/2009/03/Continuous-
    Deployment - Beyond Continuous Integration:
    Continuous Deployment
   http://radar.oreilly.com/2009/03/continuous-deployment-
    5-eas.html - Continuous Deployment in 5 easy steps
   http://www.proudlyserving.com/archives/2007/10/fear_of
    _a_broke.html - „fear of the broken build‟ effect
   http://lib.custis.ru/Continuous_Integration - wiki about
    Continuous Integration in Russian
   http://habrahabr.ru/blogs/php/91777/ - Providing quality
    for web applications (rus)
   http://www.youbrokethebuild.com/ - great posters
    created with the purpose of motivation people avoid
    breaking the build                                          67

Weitere ähnliche Inhalte

Was ist angesagt?

04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration ManagementSergii Shmarkatiuk
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release ManagementSalesforce Partners
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentIBM UrbanCode Products
 
Continuous delivery chernivcy
Continuous delivery chernivcyContinuous delivery chernivcy
Continuous delivery chernivcyVolodymyr Yelchev
 
PowerPoint Presentation
PowerPoint PresentationPowerPoint Presentation
PowerPoint Presentationrhofkens
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Baruch Sadogursky
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practicesCode Mastery
 
Alm 4 Azure with screenshots
Alm 4 Azure with screenshotsAlm 4 Azure with screenshots
Alm 4 Azure with screenshotsClemens Reijnen
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Mike McGarr
 
Ordina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDOrdina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDBert Koorengevel
 
Alliance Successful Selenium Automation
Alliance Successful Selenium AutomationAlliance Successful Selenium Automation
Alliance Successful Selenium Automationsadams22
 
The Brave New World of Continuous Release - Baruch Sadogursky
The Brave New World of Continuous Release - Baruch SadogurskyThe Brave New World of Continuous Release - Baruch Sadogursky
The Brave New World of Continuous Release - Baruch Sadogurskyjaxconf
 
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesBert Koorengevel
 
Taming the Deployment Beast
Taming the Deployment BeastTaming the Deployment Beast
Taming the Deployment BeastChris Cornutt
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionProduct Marketing Services
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotBaruch Sadogursky
 

Was ist angesagt? (18)

04 - Agile Software Configuration Management
04 - Agile Software Configuration Management04 - Agile Software Configuration Management
04 - Agile Software Configuration Management
 
Team Development and Release Management
Team Development and Release ManagementTeam Development and Release Management
Team Development and Release Management
 
Scaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel DevelopmentScaling Continuous Integration Practices to Teams with Parallel Development
Scaling Continuous Integration Practices to Teams with Parallel Development
 
Continuous delivery chernivcy
Continuous delivery chernivcyContinuous delivery chernivcy
Continuous delivery chernivcy
 
Hudson: from build jobs to build pipelines
Hudson: from build jobs to build pipelinesHudson: from build jobs to build pipelines
Hudson: from build jobs to build pipelines
 
PowerPoint Presentation
PowerPoint PresentationPowerPoint Presentation
PowerPoint Presentation
 
Maven nutshell
Maven nutshellMaven nutshell
Maven nutshell
 
Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!Build Trust in Your Build-to-Deployment Flow!
Build Trust in Your Build-to-Deployment Flow!
 
Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Alm 4 Azure with screenshots
Alm 4 Azure with screenshotsAlm 4 Azure with screenshots
Alm 4 Azure with screenshots
 
Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)Continuous Delivery Applied (Agile Richmond)
Continuous Delivery Applied (Agile Richmond)
 
Ordina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CDOrdina Accelerator program 2019 - DevOps CI-CD
Ordina Accelerator program 2019 - DevOps CI-CD
 
Alliance Successful Selenium Automation
Alliance Successful Selenium AutomationAlliance Successful Selenium Automation
Alliance Successful Selenium Automation
 
The Brave New World of Continuous Release - Baruch Sadogursky
The Brave New World of Continuous Release - Baruch SadogurskyThe Brave New World of Continuous Release - Baruch Sadogursky
The Brave New World of Continuous Release - Baruch Sadogursky
 
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelinesOrdina Accelerator program 2019 - Jenkins blue ocean pipelines
Ordina Accelerator program 2019 - Jenkins blue ocean pipelines
 
Taming the Deployment Beast
Taming the Deployment BeastTaming the Deployment Beast
Taming the Deployment Beast
 
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and SubversionBeyond Scrum: Scaling Agile with Continuous Delivery and Subversion
Beyond Scrum: Scaling Agile with Continuous Delivery and Subversion
 
How we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we gotHow we took our server side application to the cloud and liked what we got
How we took our server side application to the cloud and liked what we got
 

Andere mochten auch

Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSDanilo Poccia
 
Bamboo Hands on training 2016
Bamboo Hands on training 2016Bamboo Hands on training 2016
Bamboo Hands on training 2016Takahiro Yamaki
 
Continuous Integration with Gitlab
Continuous Integration with GitlabContinuous Integration with Gitlab
Continuous Integration with GitlabJunyoung Park
 
Is your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha DeshpandeIs your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha DeshpandeAgile Testing Alliance
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationPreetam Palwe
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meetingSergii 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
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of changeSergii 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
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefEllen Feaheny
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using BambooTudor Hornai
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case StudyTalentica Software
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...Sergii Shmarkatiuk
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionSergii Shmarkatiuk
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsBrice Argenson
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014Steve Smith
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsEric Hogue
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version ControlJeremy Coates
 

Andere mochten auch (20)

Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Bamboo Hands on training 2016
Bamboo Hands on training 2016Bamboo Hands on training 2016
Bamboo Hands on training 2016
 
Continuous Integration with Gitlab
Continuous Integration with GitlabContinuous Integration with Gitlab
Continuous Integration with Gitlab
 
Is your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha DeshpandeIs your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
Is your code Toggled?!? By Devi Sridharan & Siddhartha Deshpande
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Continuous integration for se group meeting
Continuous integration for se group meetingContinuous integration for se group meeting
Continuous integration for se group meeting
 
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
 
Software version numbering - DSL of change
Software version numbering - DSL of changeSoftware version numbering - DSL of change
Software version numbering - DSL of change
 
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...
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Bamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - BriefBamboo Continuous Integration Server - Brief
Bamboo Continuous Integration Server - Brief
 
Continuous integration using Bamboo
Continuous integration using BambooContinuous integration using Bamboo
Continuous integration using Bamboo
 
Continous Integration: A Case Study
Continous Integration: A Case StudyContinous Integration: A Case Study
Continous Integration: A Case Study
 
CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...CS 584 - Aligning development tools with the way programmers think about code...
CS 584 - Aligning development tools with the way programmers think about code...
 
CS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution ReconstructionCS519 - Visual Software Evolution Reconstruction
CS519 - Visual Software Evolution Reconstruction
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
London Atlassian User Group - February 2014
London Atlassian User Group - February 2014London Atlassian User Group - February 2014
London Atlassian User Group - February 2014
 
Introduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with JenkinsIntroduction to Continuous Integration with Jenkins
Introduction to Continuous Integration with Jenkins
 
Bamboo
BambooBamboo
Bamboo
 
Introduction to Version Control
Introduction to Version ControlIntroduction to Version Control
Introduction to Version Control
 

Ähnlich wie 03 - Continuous Integration

Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Martin de Keijzer
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Patrick Chanezon
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Controlelliando dias
 
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)Alexandre Roman
 
ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006Rupesh Kumar
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitMarco Ferrigno
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps ParadigmNaLUG
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0Jasmine Conseil
 
CI/CD patterns for cloud native apps
CI/CD patterns for  cloud native appsCI/CD patterns for  cloud native apps
CI/CD patterns for cloud native appsHelder Klemp
 
414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integrationTrevor Dolby
 
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architectureDevoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architectureBen Wilcock
 
Introduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anyninesIntroduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anyninesanynines GmbH
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Releaseelliando dias
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019 Allan De Castro
 
Continuous Delivery in the AWS Cloud
Continuous Delivery in the AWS CloudContinuous Delivery in the AWS Cloud
Continuous Delivery in the AWS CloudNigel Fernandes
 
Continuous Delivery in the Cloud
Continuous Delivery in the CloudContinuous Delivery in the Cloud
Continuous Delivery in the CloudFabio Lessa
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityBoy Tech
 

Ähnlich wie 03 - Continuous Integration (20)

Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)Improving code quality with continuous integration (PHPBenelux Conference 2011)
Improving code quality with continuous integration (PHPBenelux Conference 2011)
 
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
Building Distributed Systems without Docker, Using Docker Plumbing Projects -...
 
Buildtechs
BuildtechsBuildtechs
Buildtechs
 
Continuous Integration using Cruise Control
Continuous Integration using Cruise ControlContinuous Integration using Cruise Control
Continuous Integration using Cruise Control
 
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
La sécurité avec Kubernetes et les conteneurs Docker (June 19th, 2019)
 
ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006
 
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkitThe DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
 
The DevOps Paradigm
The DevOps ParadigmThe DevOps Paradigm
The DevOps Paradigm
 
Part 2 improving your software development v1.0
Part 2   improving your software development v1.0Part 2   improving your software development v1.0
Part 2 improving your software development v1.0
 
CI/CD patterns for cloud native apps
CI/CD patterns for  cloud native appsCI/CD patterns for  cloud native apps
CI/CD patterns for cloud native apps
 
414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration414: Build an agile CI/CD Pipeline for application integration
414: Build an agile CI/CD Pipeline for application integration
 
ansible_rhel_90.pdf
ansible_rhel_90.pdfansible_rhel_90.pdf
ansible_rhel_90.pdf
 
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architectureDevoxx 2018 -  Pivotal and AxonIQ - Quickstart your event driven architecture
Devoxx 2018 - Pivotal and AxonIQ - Quickstart your event driven architecture
 
Introduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anyninesIntroduction into Cloud Foundry and Bosh | anynines
Introduction into Cloud Foundry and Bosh | anynines
 
Apache Continuum Build, Test, and Release
Apache Continuum Build, Test, and ReleaseApache Continuum Build, Test, and Release
Apache Continuum Build, Test, and Release
 
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019  Power Apps Component Framework - Dynamics Power! 365 Paris 2019
Power Apps Component Framework - Dynamics Power! 365 Paris 2019
 
Continuous Delivery in the AWS Cloud
Continuous Delivery in the AWS CloudContinuous Delivery in the AWS Cloud
Continuous Delivery in the AWS Cloud
 
Continuous Delivery in the Cloud
Continuous Delivery in the CloudContinuous Delivery in the Cloud
Continuous Delivery in the Cloud
 
Maven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team CityMaven, Archiva, Subversion and Team City
Maven, Archiva, Subversion and Team City
 
Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model Continuous Integration & the Release Maturity Model
Continuous Integration & the Release Maturity Model
 

Mehr von Sergii Shmarkatiuk

CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...Sergii Shmarkatiuk
 
CS519 - homework project presentation
CS519 - homework project presentationCS519 - homework project presentation
CS519 - homework project presentationSergii Shmarkatiuk
 
CS519 - project idea presentation
CS519 - project idea presentationCS519 - project idea presentation
CS519 - project idea presentationSergii Shmarkatiuk
 
CS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencyCS519 - Cloud Types for Eventual Consistency
CS519 - Cloud Types for Eventual ConsistencySergii Shmarkatiuk
 
Agile software configuration management
Agile software configuration managementAgile software configuration management
Agile software configuration managementSergii Shmarkatiuk
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийSergii Shmarkatiuk
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторийSergii Shmarkatiuk
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кодаSergii Shmarkatiuk
 

Mehr von Sergii Shmarkatiuk (9)

CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
CS519 - Cloud Twin: Native Execution of Android Applications on the Windows P...
 
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
 
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
 
управление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложенийуправление сборками и развертыванием веб приложений
управление сборками и развертыванием веб приложений
 
Организуй свой репозиторий
Организуй свой репозиторийОрганизуй свой репозиторий
Организуй свой репозиторий
 
метод организации репозитория исходного кода
метод организации репозитория исходного кодаметод организации репозитория исходного кода
метод организации репозитория исходного кода
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 

03 - Continuous Integration

  • 2. TRAINING GOALS Show that there is no way present-day project could be successful without usage of continuous integration practice Establish connection between CMMI product integration process area and continuous integration practice 2
  • 3. TRAINING PLAN 1. What is continuous integration? 2. Why do we need continuous integration? 3. Prerequisites for continuous integration process 4. General CI workflow 5. How does continuous integration affect our development process? 6. Tools and their features 7. When CI is not effective? 8. We have "true CI". What next? 9. CI and CMMI product integration process area 3
  • 4. INTRODUCTION TO CONTINUOUS INTEGRATION 4 Basic ideas
  • 6. WHAT IS CONTINUOUS INTEGRATION? • Integration is when you make everything work together • Continuous is when you make everything work together very often 6 • You would go mad if you had to do it manually • That‟s why it is not about manual actions, it is about automation
  • 7. WHAT IS CONTINUOUS INTEGRATION? Software engineering practice Another step to the Approach development helping to process reduce risks automation 7
  • 8. WHY DO WE 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 to have fresh latest build 8
  • 9. PREREQUISITES FOR CONTINUOUS INTEGRATION Not everything you can continuously integrate 9
  • 10. PREREQUISITES FOR CONTINUOUS INTEGRATION Single source code repo (VCS system) Build CI tool automation Separate Self-testing server app (unit- 10 (usually) tests)
  • 11. GENERAL CI WORKFLOW Build Committing (compilation, unit- latest testing, db changes integration, etc) Update by Application is scheduler (on ready CI server) 11
  • 12. GENERAL CI WORKFLOW changes detected build & update deploy commit ~ repository deployment server continuous integration server 12
  • 13. GENERAL CI WORKFLOW Check modification Build application 13
  • 14. TOOLS 14 Instruments for continuous integration and their features
  • 15. TOOLS CLASSIFICATION CI tools Build management tools Unit testing tools Inspection tools • Code coverage analysis • Static analysis (syntax check, code dependencies) • Copy/paste detectors 15 Documentation generation tools
  • 16. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 16  XInc
  • 17. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson Most common, flexible, configurable, easy to  Apache Continuum use, de facto choice for Java projects  Atlassian Bamboo  FinalBuilder  phpUnderControl 17  XInc
  • 18. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson Most common, flexible, configurable, easy to  Apache Continuum use, de facto choice for .NET projects  Atlassian Bamboo  FinalBuilder  phpUnderControl 18  XInc
  • 19. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson Most successful adaptation of CI principle for the  Apache Continuum interpreted language (Ruby)  Atlassian Bamboo  FinalBuilder  phpUnderControl 19  XInc
  • 20. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb  JetBrains TeamCity  Apache Hudson One of the best CI tools:  Apache Continuum • pre-tested commit • build agents  Atlassian Bamboo • multi-platform builds  FinalBuilder • build dependencies  phpUnderControl • comprehensive statistics and reporting 20  XInc
  • 21. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb Tagging after successful build, distributed builds  JetBrains TeamCity  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 21  XInc
  • 22. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb Distributed builds  JetBrains TeamCity  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 22  XInc
  • 23. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb Focused on processJetBrains TeamCity just a feature  of building, CI is  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 23  XInc
  • 24. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb CI tools written in PHP for PHP projects  JetBrains TeamCity  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 24  XInc
  • 25. CI TOOLS  CruiseControl  CruiseControl.NET  CruiseControl.rb Yet another CI tool written in TeamCity PHP projects  JetBrains PHP for  Apache Hudson  Apache Continuum  Atlassian Bamboo  FinalBuilder  phpUnderControl 25  XInc
  • 26. CI TOOLS  Too many tools  All are great  All have the same principle  But each has specific features Diagrams, metrics, reporting Integration with SCM tools Notification Interface, usability Distributed builds Different ALM approaches 26
  • 27. CI TOOLS. ALM APPROACH Requirements Initiation development & Design management Testing Integration Implementation Maintenance & Deployment Utilization 27 support
  • 28. CI TOOLS. ALM APPROACH Requirements Initiation development & Design management Basic continuous integration Testing Integration Implementation Maintenance & Deployment Utilization 28 support
  • 29. CI TOOLS. ALM APPROACH Requirements Initiation development & Design management Basic continuous integration Testing Integration Implementation Extended build management Maintenance & Deployment Utilization 29 support
  • 30. BUILD TOOLS  Ant  NAnt  MSBuild  Maven  Make  Phing  Rake  … 30
  • 31. BUILD TOOLS  Ant  NAnt  MSBuild  Maven Most common, flexible, configurable, easy to  Make use, de facto choice for Java projects  Phing  Rake  … 31
  • 32. BUILD TOOLS  Ant  NAnt  MSBuild  Maven Most common, flexible, configurable, easy to  Make use, de facto choice for .NET projects  Phing  Rake  … 32
  • 33. BUILD TOOLS  Ant  NAnt  MSBuild  Maven  Make de facto case for Visual Studio and TFS users  Phing  Rake  … 33
  • 34. BUILD TOOLS  Ant Build management + dependencies management  NAnt for Java projects. Introduced POM concept.  MSBuild  Maven  Make  Phing  Rake  … 34
  • 35. BUILD TOOLS  Ant Standard de facto for UNIX applications  NAnt  MSBuild  Maven  Make  Phing  Rake  … 35
  • 36. BUILD TOOLS  Ant Implementation of build management tool in PHP  NAnt for PHP projects  MSBuild  Maven  Make  Phing  Rake  … 36
  • 37. BUILD TOOLS  Ant Implementation of build management tool in Ruby  NAnt for Ruby projects  MSBuild  Maven  Make  Phing  Rake  … 37
  • 38. UNIT TESTING TOOLS  Junit  NUnit  CppUnit  PHPUnit  SimpleTest  JSUnit  J3Unit 38
  • 39. INSPECTIONS TOOLS. TEST COVERAGE  Cobertura  Atlassian Clover  jTest  JCoverage  CodeCover  EMMA  Parasoft Insure++  Ncover  Xdebug 39  Coverage.py
  • 40. INSPECTIONS TOOLS. TEST COVERAGE  Cobertura  Atlassian Clover  jTest  JCoverage Java  CodeCover  EMMA  Parasoft Insure++ C++  Ncover C#  Xdebug PHP 40  Coverage.py Python
  • 41. INSPECTIONS TOOLS. STATIC ANALYSIS  PMD  FindBugs  JLint  FxCop  Checkstyle  ReSharper  PHP_CodeSniffer  Yasca 41  NDepend
  • 42. INSPECTIONS TOOLS. COPY/PASTE DETECTORS CPD (Copy paste detector) Checkstyle Simian Jplag Atomiq Clone digger PBA 42
  • 43. DOCUMENTATION GENERATION TOOLS Doxygen JavaDoc NDoc CppDoc phpDocumentor pyDoc RDoc 43
  • 44. OTHER TOOLS Source code Dead code metrics (loc) detectors Profiling … 44
  • 45. CI IN EPAM MICROSOFT TECHNOLOGIES DIVISION Project Project Product Primary CCNET Code Analysis Unit Test Copy & Automat Automate Language tools testing coverage Paste e build deploymen tools detectors delivery t ACT-INT C# x - x (Unit) - - - - ACT-LVI C# x x (FxCop, PBA) x - - - - CON-GEN C#, ASP.NET - - - - - - - EPM-UTIL C#, ASP.NET x x (FxCop,PBA) x (NUnit) x (NCover) x (Simian) + + ESS-MSFT - - - - - - - FSTIDX C#, ASP.NET x x (PBA) x - - - - ICPDP C# x - - - - - - LOGIDEX Java, J#, C#, ASP.NET - - - - - - - LSEEC C# x x (FxCop, PBA) x (NUnit) - x (Simian) - + MIS-OPC C# x x x - - - - MIS-SPR C# x x x (Nunit) x - - - MultAPI VBScript - - - - - - - MultCons C# x x (FxCop, PBA) - - x (Simian) - - MultData C#, C++, HTML, VB x - x - - - - MultEDG C++, C# - x (FxCop) x - - x - Mult-IPAS C#, C++ x x (FxCop) - - - - - MultRIN C# - - x - - - x Mult-Torn C++ - - x - - - -
  • 46. CI IN EPAM MICROSOFT TECHNOLOGIES DIVISION Project Project Product Primary CCNET Code Analysis Unit Test Copy & Automat Automate Language tools testing coverage Paste e build deploymen tools detectors delivery t RTRS-AAAM C# - - - - - - - RTRS-MTST C#, ASP.NET - x (FxCop) - - - - - RTRS-RKSD C# x x - - x (Simian) - - RTRS-RKWM C# - x - - - - - TAK-PBLD C# - x (FxCop) x (Nunit) - - - - TRR-ODC (O2I) C#, ASP.NET x x (FxCop,PBA) x (Nunit) - x (Simian) - - TRR-ODC (SapSn) C# x x (FxCop,PBA) - - x (Simian) - - 46
  • 47. MOST TYPICAL QUESTIONS  All the above-described info sounds cool. I feel that it might be useful in my project. But I am not sure I can find enough resources to start and support this activity.  EPM-BET project is started long time ago for this purpose. It provides corresponding resources and support  There are too many different tools. They are all different. How could I use them both independently and all at once?  I recommend to use AgileSCM approach. It uses 47 unified versions numbering which could be used by any mentioned tool.
  • 48. ADVANCED CONTINUOUS INTEGRATION 48 More complex issues related to the continuous integration
  • 49. HOW DOES CI AFFECT DEVELOPMENT PROCESS?  Commit policy (mainlines are on the watch)  Don't break the build rule (make local build)  Everyone commits to the mainline everyday  Keeping the build fast  Run fast tests first  We can automate deployment  Build is primary, deployment is secondary  Continuous design 49
  • 50. “DON’T BREAK THE BUILD” RULE  Test code properly before checking in  Avoid depending on a local resource that is not under version control or does not exist on the target computer.  Write tests to cover common problems  Make sure local inspections were run successfully  Broken build in most cases means that it is impossible or not recommended to use corresponding codebase until it has been fixed 50
  • 51. “DON’T BREAK THE BUILD” OBSESSION  It is often impossible to reproduce integration problem without checking in.  You might spend A LOT of time looking for a failure reason in someone‟s else module  During that time you will be the one WHO FAILED THE BUILD  If you want to avoid such situations, every checking in becomes a nightmare  Attitude to the “don‟t break the build” rule may be a detector of how mature the team is. 51
  • 52. “DON’T BREAK THE BUILD” OBSESSION. SOLUTION  Nightly builds instead of builds „on commit‟  Team needs more strict and less strict variations of the “don‟t break the build” rule during different SDLC phases  There are architectural issues to pay attention to  Sometimes several small projects should be started instead of one large 52  Build policy is to be developed
  • 53. WHEN CI IS NOT EFFECTIVE?  DVCS  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 53
  • 54. WE HAVE "TRUE CI". WHAT'S NEXT?  Building tags  Separate builds having different maturity  levels   Codebase structure filtering  Triggering build only for changes in specified list of folders  Integration with issue tracking systems  Different approach for different SDLC 54 phases
  • 55. WE HAVE "TRUE CI". WHAT’S NEXT? 1.x.x 2.x.x /trunk PA 1.x.0 1.x.3 2.x.0 A 1.x.1 1.x.4 2.x.1 builds B 1.x.2 1.x.5 2.x.2 /1.x.x AR 1.0.0 BR 1.0.1 RC 1.0.2 1.0.3 releases ST 1.0.4 56 /1.0.x
  • 56. WE HAVE "TRUE CI". WHAT’S NEXT? 1.x.x 2.x.x /trunk 1.x.0.0 1.x.0.1 1.x.1.0 1.x.1.1 1.x.2.0 2.x.x.0 2.x.x.1 2.x.x.2 2.x.x.3 2.x.x.4 … 2.x.0.0 2.x.0.1 2.x.1.0 2.x.1.1 integration (dev) 2.x.0 2.x.1 2.x.2 builds CI server 1.x.0 1.x.1 1.x.2 1.x.3 1.x.4 1.x.5 builds 1.x.2.1 … 1.x.3.0 1.x.3.1 1.x.4.0 1.x.4.1 1.x.4.2 1.x.4.3 integration (dev) /1.x.x CI server releases 1.0.0 1.0.1 1.0.2 1.0.3 1.0.4 integration (rel) 1.0.x.0 1.0.0.0 1.0.0.1 1.0.1.0 1.0.1.1 1.0.2.0 1.0.2.1 1.0.3.0 1.0.3.1 57 /1.0.x
  • 57. WHAT NEXT? VERSIONS NUMBERING PATTERNS N.x.x.L pilot integration integration N.x.K.L development integration N.?.?.L N.M.x.L pre-release integration N.M.K.L release integration 2.0.x.0 2.0.x.1 2.0.0 2.x.x.0 2.x.x.1 2.x.x.2 2.x.x.3 2.x.x.4 2.x.0 … … 1.x.1.0 1.x.1.1 1.x.2 1.1.x.0 1.1.0 1.x.2.0 1.x.2.1 1.x.3 1.x.3.0 1.x.3.1 1.x.4 dev rel 58 N.x N.M 1.0.x.0 1.0.0 1.0.0.0 1.0.0.1 1.0.1
  • 58. 59
  • 59. CONCLUSION  Thereis a lot of possibilities to make your continuous integration better:  Several integration streamlines (not only trunk)  Development and release integration streamlines  Introduce version number consisting of four symbols  Proper version number inheritance  Integration of builds and releases  …
  • 60. CONCLUSION  CI is another SCM tool (practice)  Middle size project should definitely have it.  It is used mostly in agile world  Agile SCM is the result of attempt to understand what version should have artifacts which are being built by CI server
  • 62. RECOMMENDED READING 1. Continuous Integration: Improving Software Quality and Reducing Risk by Paul M. Duvall, Steve Matyas, Andrew Glover 63
  • 63. RECOMMENDED READING 2. Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by By Jez Humble, David Farley 64
  • 64. RECOMMENDED READING 3. Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard 65
  • 65. RECOMMENDED READING 4. Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Applications by Mark Clark 66
  • 66. USEFUL LINKS  http://martinfowler.com/articles/continuousIntegration.ht ml - the main article about CI from Martin Fowler  http://www.infoq.com/news/2009/03/Continuous- Deployment - Beyond Continuous Integration: Continuous Deployment  http://radar.oreilly.com/2009/03/continuous-deployment- 5-eas.html - Continuous Deployment in 5 easy steps  http://www.proudlyserving.com/archives/2007/10/fear_of _a_broke.html - „fear of the broken build‟ effect  http://lib.custis.ru/Continuous_Integration - wiki about Continuous Integration in Russian  http://habrahabr.ru/blogs/php/91777/ - Providing quality for web applications (rus)  http://www.youbrokethebuild.com/ - great posters created with the purpose of motivation people avoid breaking the build 67

Hinweis der Redaktion

  1. Рад приветствовать вас на очередном тренинге серии, посвященной конфигурационному менеджменту. И мы будем рассматривать Continuous integration.Continuous integration – очень заезженная тема. Об этом говорят все, кому не лень. Практика continuous integration стала практически незаменимой в большинстве проектов и вместе с этим приобрела привкус «попсовости» и обсосанности со всех сторон. Но тем не менее, всё равно встречаются такие люди, которые не знают об этой практике. Дошли слухи о том, что в Днепропетровске НИКТО кроме того, что вообще не использует CI, так еще и не знает о том, что это такое! Если кто-то среди присутствующих есть из Днепропетровска, можете поднять руку и сказать пару слов в свою защиту. Кроме того, что я рассказываю о том же, о чем и практически все остальные пропагандисты (инструменты, workflow), я еще и попробую вдохнуть новую жизнь в понятие непрерывной интеграции показав некоторую доселе невидимую грань. екОсобенностью данного тренинга является то, что я его провожу впервые. Остальные тренинги серии в том или ином виде уже достигали внимания слушателей. Этот же тренинг я подготовил совсем недавно. Так что должен предупредить о том, что я не уверен насчет того, вложимся ли мы в отведенные 1.5 часа времени.
  2. У сегодняшнего тренинга две цели.Первая - показать, что современный проект и вправду не может обойтись без практики continuous integration.Вторая – установить взаимосвязь между практикой непрерывной интеграции и соответствующей процессной области CMMI, которая называется Product Integration.
  3. Мы рассмотрим следующие вопросы:Что такое CIЗачем это вообще надоБез чего CI невозможенСамый общий workflow – действия, входящие в число стандартных при организации процесса непрерывной интеграции Как CI влияет на весь процесс разработкиИнструменты и их особенностиОписание случаев, когда CI не нужен или неэффективенНовая грань непрерывной интеграции – чего не хватает в функциональности и базовых идеях существующих инструментовСвязь непрерывной интеграции и модели зрелости процессов.
  4. Начнем с базовых идей. Опрос на тему использования практики CI
  5. Самый первый и самый главный вопрос – что же такое непрерывная интеграция?
  6. Есть несколько смежных формулировок что такое непрерывная интеграция. В первой лекции я говорил пару слов об инженерных практиках и о том, что это объединение двух вещей: 1) идей по поводу того, как разрабатывать ПО эффективно, 2) инструментов, реализующих эти идеи. Непрерывная интеграция – это как раз такая инженерная практика. Это также подход, помогающий уменьшить риски при разработке ПО. В списке рекомендованной литературы есть книга o CI, которая так и называется – Improve software quality and reducing risksНепрерывная интеграция – это еще один шаг на пути к автоматизации процессов разработки. Этот шаг следующий после автоматизации сборок.
  7. Главным идеологом непрерывной интеграции является Мартин Фаулер. Поэтому на вопрос зачем нам нужна непрерывная интеграция я отвечу его словами:Мартин плавно подводит к ответу, говоря о том, в той ситуации, когда команда интегрирует свою работу часто, причем когда частота эта достигает иногда нескольких интеграций в деньнепрерывная интеграция позволяет избежать интеграционных проблем, что ведет кразработке целостного ПО быстрееКроме того, CI – это одна из практик экстремального программирования, идеологом которого также является Мартин Фаулер. Причем, это единственная практика ХР, которая входит в число практик конфигурационного менеджмента. Так как экстремальное программирование претендует на то, чтобы быть полноценной методологией разработки, факт упоминания CI среди практик указывает на ее важность. Опустив из рассмотрения, риски, качество и прочую невидимую лабудень, которую сложно пощупать, перейдем к тому, что же будет видимым результатом непрерывной интеграции. И таким видимым результатом является постоянное наличие свежих сборок приложения. Без нашего вмешательства.
  8. Не всё можно совместить так, чтобы составные части успешно работали вместе. Причем даже если это можно сделать вручную, не всегда процесс интеграции можно автоматизировать. Как мы уже знаем, автоматизация интеграции – это ключ к возможности выполнять интеграцию непрерывно (continuously).
  9. нужно выполнить несколько условий для того, чтобы практика непрерывной интеграции успешно и (что немаловажно) полноценно выполнялась, соответствуя изначальной идее и концепции.Исходный код должен храниться в системе контроля версий.Сборки должны быть автоматизированы. Кроме этого, довольно общего условия, я рекомендовал бы использовать специальный тип сборок – интеграционный. К сожалению, я не смог подробно на этом моменте остановиться во время рассказа об автоматизации сборок. Очень часто сборки автоматизируются единственно с целью именно непрерывной интеграции. Но нужно этот тип сборок отдельно выделять и не путать с остальными, ведь не единой непрерывной интеграцией жив разработчик. В идеалетакжедолжноиспользоватьсяюнит-тестирование, непосредственное выполнение которого входит в задачу автоматизации сборок.Совершенно замечательно, если для выполнения интеграции используется отдельная рабочая станция. И, конечно же, нам понадобится инструмент для выполнения непрерывной интеграции. Такой инструмент будет называться сервером непрерывной интеграции. Хотя, нужно заметить, что это не обязательно должна быть отдельная рабочая станция. (Server, serve – обслуживать)
  10. Как же работает непрерывная интеграция? Как этот процесс организуется и что сюда входит? Процесс начинается тогда, когда разработчики добавляют изменения в репозиторий исходного кода. Сервер непрерывной интеграции отслеживает то, что произошли изменения в репозитории и автоматически последняя актуальная версия исходного кода попадает в рабочую директорию CI-сервера. Предполагается, что CI-сервер знает, где среди всей кучи исходников искать билд-скрипт. Он находит его и запускает. После выполнения всех действий, входящих в автоматизированную сборку приложение оказывается готовым для использования/тестирования/еще чего-то. (Опрос: для чего готово приложение после выполнения непрерывной интеграции?)
  11. Те же яйца – вид сбоку. На первом изображении - репозиторий исходного кода. На втором – файловая система сервера непрерывной интеграции. Это рабочая копия. Исходники обновляются именно здесь. Средибольшогоколичествафайлов находится билд-скрипт. Который используется для запуска сборки и развертывания. Приложение попадает в некоторую директорию на сервере развертывания. Можно запутаться в обилии мест в которых можно найти ресурсы нашего проекта. Но суть в том, что все эти места нужны для разных целей. Вот
  12. Нам нужно знать, какие существуют инструменты для организации процесса непрерывной интеграции и какими специфическими особенностями они обладают.
  13. Расширенная непрерывная интеграция и управление сборками означают, что инструменты облегчают кроме всего прочего еще и тестирование (для разных платформ), а также развертывание приложения. Тоже на разные платформы. Это то, что касается подходу к управлению жц приложения. Разные инструменты по разному покрывают фазы жц. ОПРОС на тему использования инструментов непрерывной интеграции
  14. ANT + CruiseControl = standards de facto
  15. NAnt + CruiseControl.NET
  16. POM – project object model. Convenient for the new projects. It is a nightmare for legacy code.
  17. 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)
  18. 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)
  19. Other tools:Jdepend, PHP_Depend, PHP-sat, LintPyLintPyCheckerRATS – multilingual
  20. CPD is the plugin for PMDCloneAnalyzerCloneDRConQATCPMinerCCFinder
  21. More about AgileSCM in the next section (advanced continuous integration)
  22. Это были основы. Сейчас я буду углубляться в тонкости всего того, что может быть связано с непрерывной интеграцией.
  23. CI establishes some basics of configuration management and development policy. При использовании практики непрерывной интеграции неизбежной будет ее влияние как на весь процесс разработки, так и на отдельные его составляющие. При внешней видимой простоте того, что происходит во время непрерывной интеграции, более пристальное рассмотрение выявляет, что CI достает своими щупальцами достаточно далеко. И возникает множество вопросов, требующих ответа. Так, к примеру, длительное использование практики CI со временем ведет к необходимости возникновения политики коммитов. Когда направления разработки (ветки), подлежащие непрерывной интеграции, должны находиться под присмотром, исключая возможность вносить в репозиторий какие попало изменения.Это также отражается в правиле “don’t break the build” («не поломай сборку», «сборки не ломать!», «недопущение поломок сборок»). На сайте http://www.youbrokethebuild.com/ собраны замечательные плакаты, созданные с целью мотивировать людей избегать поломок сборок. Я не стал вставлять в презентацию пример плаката, так как там изображена бабушка, показывающая неприличный знак. Как можно избежать поломок? Нужно делать локальные сборки и проверять, что всё работает.Принцип внесения в репозиторий изменений каждым разработчиком команды каждый день подразумевает возможность коммуникации – каждый разработчик видит то, что делают другие разработчики. Таким образом легко устраняются интеграционные проблемы и конфликты участков кода. Но нужно упомянуть о том, что в связи с этим принципом может возникнуть ситуация слишком частых сборок приложения. Особенно когда в команде достаточно много разработчиков, и интеграционные сборки выполняются достаточно длительное время. Поэтому еще одним принципом будет слежение за тем, чтобы сборки выполнялись быстро. Причем разные фазы сборок могут занимать разное время. Лучше когда то, что выполняется быстро (к примеру, самые простые тесты) выполняется первым. Таким образом реализуется принцип управления сборками fail the build fast. CI позволяет кроме сборок также автоматизировать и развертыванияНо нужно учитывать, что понятие сборок будет первичным по отношению к понятию развертываний. В любом случае сборки выполняются первыми.Еще один принцип разработки, на который CI влияет напрямую – это непрерывное проектирование (continuous design). Это принцип экстремального программирования, подразумевающий то, что дизайн системы постоянно меняется в связи с постоянным влиянием тех или иных факторов. Причем изменение дизайна системы происходит мелкими шагами. Непрерывная интеграция позволяет отследить влияние нового дизайна системы так же пошагово, постепенно, используя возможности юнит-тестирования. Таким образом удается избежать «большого взрыва» при объемном редизайне системы или ее отдельных модулей.
  24. Давайте подробнее рассмотрим правило о «недопущении поломок сборок». Что это правило означает и как можно избежать этих поломок?Исходный код нужно как следует тестировать перед добавлением изменений в репозиторийНужно избегать зависимости от локальных ресурсов, не сохраненных в системе контроля версий или которых попросту нет на интеграционном сервере. Также по возможности нужно избегать хардкода свойств и ссылок на ресурсы. Обязательно пишите тесты для покрытия наиболее часто встречающихся проблем.Убеждайтесь в том, что инспекции выполняются успешно. Это самое печально-смешное – когда сборка ломается из-за того, что мы неправильно отформатировали код. Поломанная сборка означает одну простую вещь – независимо от причины поломки, исходный код, который соответствует ветке, в которой поломка произошла, использовать нельзя (или не рекомендуется) до тех пор, пока причина поломки не будет ликвидирована.Часто следование этому правилу становится, своего рода, одержимостью.
  25. Давайте поговорим об этой одержимости и ее причинах.Довольно часто получается так, что невозможно воспроизвести интеграционную проблему без добавления изменений в репозиторий исходного кода. Конечно, нужно по максимуму избегать и предотвращать такие ситуации, когда некоторая проблема воспроизводится при специфических обстоятельствах. Но такие ситуации случаются. К примеру, еслимы разделяем сборки по типам: интеграционные и приватные, в число задач приватных сборок могут не входить некоторые задачи. Такие как, например, выполнение перформанс-тестов, покрытия исходного кода юнит-тестами или генерация документации. Это один пример. Вероятность того, что поломка произойдет во время этих фаз, довольно невысока. Но вот другой пример. В моей практике встречался случай, когда существовал всего один тип сборки – интеграционный. Было практически невозможно или нецелесообразно (долго) выполнять локальные сборки. Кроме того, было невозможно запустить отдельные фазы автоматизированных сборок для того, чтобы проверить, что эти фазы проходят успешно. Это всё результат недостаточно ответственного подхода к организации сборок. Единственный способ, которым можно было наверняка проверить изменения и то, что они собираются – закоммитить их и позволить начаться интеграционной сборке, предварительно внимательно происследовав код на возможные ошибки. Человеческий фактор иногда срабатывал – и сборки ломались. Кроме того, сборки могут ломаться по совершенно непонятным причинам. Предположим мы все таки сделали локальную сборку и она поломалась. Оказывается, что можно потратить человекочасы на поиск ошибок в чужом коде или модуле, так как причиной поломки будут обоюдные изменения в разных модулях. Но если вдруг локальная сборка прошла успешно и вы добавили изменения в репозиторий с последующим выполнением неудачной интеграционной сборки, всё время, пока вы будете корпеть над проблемой, именно вы будете тем человеком, который поломал сборку. Может показаться, что это довольно невероятная ситуация. Но такие проблемы возникают достаточно часто в проектах с недостаточно продуманной архитектурой с недостаточно уделяемым вниманием вопросам конфигурационного менеджмента. Если пытаться избегать подобного рода ситуаций, каждое добавление в репозиторий изменений становится настоящим наваждением и начинает забирать слишком много времени. Очень тонкий политический нюанс. Отношение к правилу о «недопущении поломок сборок» может быть свидетельством того, насколько зрелой является команда и насколько команда осведомлена о тонкостях всех вопросов, связанных с непрерывной интеграцией, управлением сборками итд.Естьстатьясотрудникамайкрософт, жалующегося на то, насколько отстойным является правило о «недопущении поломок сборок», которое превратилось в определенное время в бюрократию.
  26. Nightly builds – compromise between team size and project size. NB is not effective if there are too many developersArchitectural issues: AOP, decomposition, modularization, loose coupling, OOD, Large proj to small projs = dependencies management. There should be optimal size of the project in LOCBuild policy established such types of builds as: private, local, integration, release. There is an example of build policy in ‘Build and Deployment management’ training. Билдполиси также подразумевает наличие разных типов веток, которые собираются по разным правилам. Для одних веток используются более строгие вариации правила о «недопущении поломок сборок», а вторых – более демократичные. ОПРОС на тему правила о сломанных билдах
  27. Непрерывная интеграция – замечательная практика, решает кучу проблем.Но, тем не менее, есть случаи, когда использование CI оказывается не совсем эффективным. Такими случаями являются:Использование распределенных систем контроля версий. DVCS предполагают, что иногда один из репозиториев выделяется в качестве центрального. Но кроме того, что это происходит не всегда, в центральный изменения могут поступать не так часто (вспомним принцип commit every day).CI часто бывает совсем не нужна для экспериментальной разработки (одно из проявлений экспериментальных разработок – это использование распределенного контроля версий, а мы уже сказали, что для DVCS CI не совсем эффективен)И для маленьких проектов. В этих двух случаях CI требует несопоставимо много накладных расходов на поддержку и организацию.Из тренинга, посвященного управлению сборками и развертываниями вы помните о том, что приложение делится на функциональную часть и часть данных. Для данных используется совершенно другой подход к конфигурационному менеджменту, нежели для функциональной части – используется интеграция баз данных. И совершенно бессмысленным становится использование CI для интеграции баз данных.Для некоторых типов проектов, не связанных с разработкой, CI не нужен.
  28. How would we define what branches types are there? How could we distinct dev from releaseif branch types are not clearly defined and there is no visualization of inheritance? By two first symbols. N.x (number dot x) means development streamline.Release streamline has two numbers instead (N.M) of number and ‘x’ symbol. Difference in the “who broke the build” policy. Release – more strict, development – more loose. Pay attention to the integration version number pattern. It consists out of 4 symbols. Second and third symbols denote specific cases of integrationN.x.x.L is so called ‘pilot integration’ . It means that integration happens before any build (PA) performed using development streamline codebase. N.x.K.L is ordinary development integration. K number is being incremented after each development build (PA, A, B).N.M.x.L is so called ‘pre-release integration’. It means that integration happens before any build (PA) performed using release streamline codebase.N.M.K.L is fully functional `release integration’.
  29. Most detailed description of ideal continuous integration process. И еще более детальное описание идеальногопроцесса интеграции (к сожалению, без упоминания четырехсоставных номеров версий) будет приложено к материалам тренинга. Не нужно сейчас в это вникать и пытаться рассмотреть детали. Цель этого слайда не в иллюстрации чего-то, а в том, чтобы вас заинтересовать и чтобы вы по окончании тренинга заглянули в материалы, выложенные вместе с видео.
  30. Есть много возможностей совершенствовать процесс CI.Несколько интеграционных направлений разработки ( не только транк)Разделение на девелоперское и релизное интеграционные направленияВнедрить использование четырехсоставного номера версии. В CruiseControlуже есть такая возможность. Внедрение надлежащего наследования номеров версийИнтеграция «ручных» сборок и релизов. Под ручными сборками подразумеваются либо те, которые выполняются нажатием кнопки в инструменте непрерывной интеграции или создание тега, наличие которого будет правильно определено сервером непрерывной интеграции. Много всего ещеIt is all was made possible due to the introduction of exhaustive versions numbering approach (AgileSCM).
  31. Conclusion before we move to the place of CI in CMMIЕще пару слов перед тем, как мы перейдем к рассмотрению места непрерывной интеграции в CMMI модели. Непрерывная интеграция – это всего лишь очередной инструмент или практика. Проект среднего размера должен обязательно использовать эту практикуТак сложилось, что CI используется преимущественно в agile мире. И разработка подхода к нумерации версийAgile SCM – это результат попытки осмыслить какие номера версий должны носить результаты сборок, выполняющихся сервером непрерывной интеграции. Я этим вопросом однажды заинтересовался и… до сих пор не могу остановиться.