DOC PREVIEW
CU-Boulder CSCI 5828 - Continuous Integration & Build Systems

This preview shows page 1-2-22-23 out of 23 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 23 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Continuous Integration & Build SystemsRyan TidwellSpring 2010CSCI 5828Continuous Integration & Build SystemsIntroductionAutomated Build ToolsSource RepositoriesContinuous IntegrationOrganizing The Source TreeAutomated Tests & Continuous IntegrationContinuous Integration PlatformsContinuous Integration In ActionIntroduction Continuous build systems are also referred to as “continuous integration” or CI systems. CI systems enable the continuous integration process Let's discuss some some fundamentals of continuous integration before looking at Hudson (a CI system)Automated Build ToolsThis class of tools provides developers a way to script the compilation of source code, thereby removing the complexity of compiling and packaging. Common build automation tools include make and ant.Automated Build Tools As with all processes that we put in place to develop software, the process for building the system from source should be repeatable. Scripting builds with tools like make or ant will produce a build process that is easily repeated by individual developers.Automated Build Tools This is great! We have a way to remove complexity from compiling large software systems. But how do we distribute the build script to developers? What if it changes? Where do developers even obtain the source that our build script will compile?Source Repositories To solve these problems, we want to keep a single copy of the source code and build script so that we have a single repository for developers to work from. What if a large number of people need to make changes to the source in this repository? How should we handle conflicting changes in the repository?Source Repositories We can manage access to the repository through systems such as CVS, SVN, and ClearCase. These systems allow developers to “check out” copies of the repository and manage modifications to the repository so that conflicts are avoided. Now we can ensure that everyone is seeing the same source and that any changes made to the source don't get lost. A single source repository is a key aspect of continuous integration. We want our CI system to build what is in the source repository. Builds can be triggered by check-ins or scheduled for regular execution.Organizing The Source TreeWe want our builds to run quickly. Instead of building one giant executable, it is a best practice to organize the source so that the application is composed of smaller modules/sub-systems. This allows us to make changes to modules and sub-systems and build them quickly instead of waiting for the entire system to build in a developer sandbox every time we make a changeContinuous Integration Repeatable processes are easily automated by computers! We have a single repository for our source and a script for executing the build We now have the ability to introduce software that is capable of building our source as often as we want and publishing our final product as often as we want!Continuous Integration Platforms Enter the CI system! CI systems provide a more sophisticated way of managing builds from our source repository These systems are more sophisticated than simple cron jobs CI systems provide us an environment for compiling, executing unit tests, and publishing the finished product Builds can be scheduled or done on-demand by responding to changes in the source repository All of this could theoretically be done from somebody's sandbox, so why bother?Continuous Integration Platforms Processes that require a significant amount of human intervention are error prone. We need to have the build run perfectly EVERY time. In short, we need perfection! Using a CI system removes the human element from our build process and moves our process that much closer to perfection The CI system should be a part of our life-cycleWhat Is a Continuous Build System?Continuous build systems, also referred to as continuous integration systems (CI) automate the process of compiling and packaging source code. CI systems allow builds to happen in a single place where the whole team can get quick feedback on whether the code in the repository builds and unit tests are passing. CI systems also provide a way for the system to be installed after being built.Examples Of Continuous Build SystemsCruise ControlCruise Control .NETHudsonBambooBeeboxApache ContinuumTying It All Together Now that we have a single source repository, modularized our system appropriately, and have introduced a CI system to build our code and execute test suites regularly, we now have the foundations of continuous integration in place.Continuous Build Systems In ActionWhile there are many other powerful CI platforms such as Cruise Control, as a case study we will now look at Hudson in action within HP. Within HP's ESS Software division we employ Hudson as our continuous integration platform.The software we develop (Insight Dynamics) is delivered as a suite composed of smaller products. We have decomposed our source tree into small modules that can be built individually. Hudson builds each project in the suite using Ant and allows us to manage our build dependencies with Ivy.Not only does Hudson build our source and run our test suites, it notifies us when builds fail and publishes the test results.Continuous Build Systems In ActionContinuous Build Systems In ActionOur build environment makes use of the distributed build management capabilities of Hudson. We run builds on Windows, HP-UX, and Linux Hudson slaves so that we can build customized executables for Windows, HP-UX, and Linux.Continuous Build Systems In ActionHere are some screenshots from Hudson. Hudson installs easily on Windows,Linux, HP-UX, and a variety of other operating systems. It is implemented in Java and is therefore platform independent. There are hundreds of pluginsavailable for Hudson. By default, Hudson comes with Ant, Maven, and CVSplugins installed. Hudson can build projects written in virtually any language.Development teams also have the flexibility to develop their own customHudson plugins for further customizing their build process.Continuous Build Systems In ActionContinuous Build Systems In ActionContinuous Build Systems In ActionOther ResourcesMartin


View Full Document

CU-Boulder CSCI 5828 - Continuous Integration & Build Systems

Documents in this Course
Drupal

Drupal

31 pages

Deadlock

Deadlock

23 pages

Deadlock

Deadlock

23 pages

Deadlock

Deadlock

22 pages

Load more
Download Continuous Integration & Build Systems
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Continuous Integration & Build Systems and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Continuous Integration & Build Systems 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?