Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Theory  





2 Recommended practices  



2.1  Recommended practice #1  





2.2  Recommended practice #2  







3 Advantages  





4 Tools  





5 See also  





6 References  














Multi-stage continuous integration






Magyar
 

Edit links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


Multi-stage continuous integration is a software development technique intended to achieve highly integrated parallel development activity while reducing the scope of integration problems.[1]

Theory[edit]

Multi-stage continuous integration takes advantage of a basic unifying pattern of software development: software moves in stages from a state of immaturity to a state of maturity, and the work is broken down into logical units performed by interdependent teams that integrate the different parts together over time. What changes from shop to shop is the number of stages, the number and size of teams, and the structure of the team interdependencies.

Recommended practices[edit]

Multi-stage continuous integration is an expansion upon continuous integration, it presumes that you are already following those recommended practices.

The larger and/or more complex the project, the higher the chance that the project becomes unstable. Alerts and broken builds increase as the project grows. Progress decreases and the mainline gets increasingly unstable. The risk of build failure increases exponentially as the number and locations of developers grow.[2]

Recommended practice #1[edit]

Each developer works on their own task. As they make changes, continuous integration is done against that team's branch. If it does not succeed, then that developer (possibly with help from her teammates) fixes the branch. When there is a problem, only that team is affected, not the whole development effort. This is similar to how stopping the line works in a modern lean manufacturing facility. If someone on the line pulls the "stop the line" cord, it only affects a segment of the line, not the whole line.

It is note-worthy that in recent years the "topic" or "feature" branch model has gained in popularity over the team based branch model. See for example the popular Git-Flow branching model [3]

On a frequent basis, the team will decide to go to the second phase: integration with the mainline. In this phase, the team does the same thing that an individual would do in the case of mainline development. The team's branch must have all changes from the mainline merged in (the equivalent of a workspace update), there must be a successful build and all tests must pass. Integrating with the mainline will be easier than usual because only pre-integrated features will be in it, not features in-process. Then, the team's changes are merged into the mainline which will trigger a build and test cycle on the mainline. If that passes, then the team goes back to the first phase where individual developers work on their own tasks. Otherwise, the team works on getting the mainline working again, just as though they were an individual working on mainline.

Changes propagate as rapidly as possible, stopping only when there is a problem. Ideally, changes make it to the main integration area just as frequently as when doing mainline development. The difference is that fewer problems make it all the way to the main integration area. Multi-stage continuous integration allows for a high degree of integration to occur in parallel while vastly reducing the scope of integration problems.[4]

Recommended practice #2[edit]

For multi-stage continuous integration, each team must have its own branch.

Advantages[edit]

Multi-stage continuous integration has many advantages: [citation needed]

Tools[edit]

Tools that support multi-stage continuous integration include:

See also[edit]

References[edit]

  1. ^ Multi-Stage Continuous Integration accessdate 2009-02-25, Poole, Damon, 2008-12-02 Dr. Dobb's, Published by TechWeb
  • ^ Advanced Multi-Stage Integration, accessdate 2009-03-19, Poole, Damon, 2009-01-17 Agile Development Thoughts
  • ^ "A successful Git branching model".
  • ^ Large Scale Continuous Integration, Poole, Damon, 2009-01-19 CMCrossroads Published by CMC Media[permanent dead link]
  • ^ a b AccuRev and Electric Cloud Partner to Advance Multistage Continuous Integration and Scalable Agile Best Practices, accessdate 2009-03-19 Archived 2008-07-20 at the Wayback Machine
  • ^ Pain Free Building Guide: Team Based Streams
  • ^ "Jazz.net". Jazz.net.

  • Retrieved from "https://en.wikipedia.org/w/index.php?title=Multi-stage_continuous_integration&oldid=1099213442"

    Categories: 
    Continuous integration
    Extreme programming
    Hidden categories: 
    All articles with dead external links
    Articles with dead external links from February 2018
    Articles with permanently dead external links
    Webarchive template wayback links
    Articles with short description
    Short description is different from Wikidata
    All articles with unsourced statements
    Articles with unsourced statements from April 2011
     



    This page was last edited on 19 July 2022, at 15:38 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki