Lecture XIII: Continuous Integration CS 4593 Cloud-Oriented Big Data and Software Engineering.

Slides:



Advertisements
Similar presentations
Windows IT Pro magazine Datacenter solution with lower infrastructure costs and OPEX savings from increased operational efficiencies. Datacenter.
Advertisements

Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Continuous Integration in a Java Environment. Developers / Time.
Continuous Integration (CI) By Jim Rush Version Control Build Test Report.
Integrated Development Environments, Source Control Repositories, Automated Testing Tools, Bug Tracking, Code Analysis Tools, Build Tools, Project Hosting.
System Center 2012 R2 Overview
Eralp Erat Senior Software Developer MCP,MCAD.NET,MCSD.NET.
CS 501 : An Introduction to SCM & GForge An Introduction to SCM & GForge Lin Guo
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
© copyright 2014 BMC Software, Inc. DevOps consultant Niek Bartholomeus Going DevOps with BMC.
System Integration and Build Management Christian Schröder Roman Antonov.
Improving Software Quality with Continuous Integration
Continuous Integration for Databases Learn how to automate your build and test Steve Jones Red Gate Software Part II of the Continuous Delivery for Databases.
Continuous Integration after Hudson, CruiseControl, and Home Built Mile High Agile 2011 – Mark Waite.
#RefreshCache CI - Daily Builds w/Jenkins – an Open Source Continuous Integration Server Nick Airdo Community Developer Advocate Central Christian Church.
DNN LOVES JENKINS FOR CONTINUOUS INTEGRATION
By John Boal  Continuous Integration [CI] ◦ Automating the build process ◦ Build the entire system each time any new.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
THE CONTINUOUS DELIVERY ZONE Craig Berntson Chief Software Gardener Mojo Software Worx.
Ch 1. Introduction Dr. Bernard Chen Ph.D. University of Central Arkansas Spring 2012.
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Craig Berntson
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Creating a Maintainable Software Ecosystem Jeremy D. Miller November 27th, 2007.
AUTOBUILD Build and Deployment Automation Solution.
Design and Programming Chapter 7 Applied Software Project Management, Stellman & Greene See also:
INFSO-RI Module 01 ETICS Overview Alberto Di Meglio.
MAE Continuous Integration Administration guide July 8th, 2013.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
INFSO-RI Module 01 ETICS Overview Etics Online Tutorial Marian ŻUREK Baltic Grid II Summer School Vilnius, 2-3 July 2009.
Continuous Integration Mile High Agile 2012 – Mark Waite 3 April 2012.
Build automation. Prerequisites for Continuous Integration (CI)  Version Control System  Build automation  Notification on build result sent to related.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Bamboo 1.0 Pre-sales presentation (March, 2007). Continuous Integration Typical development: design, develop, unit test, integrate, deploy Typical development:
TSSG Case Study: Using Free & Open Source Tools to Manage Software Quality EECS811: Software/IT Project Management Agile Integration Management Case Study.
Cruise Training Introduction of Continuous Integration.
INFSO-RI JRA2 Test Management Tools Eva Takacs (4D SOFT) ETICS 2 Final Review Brussels - 11 May 2010.
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
Copyright © 2010 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture. ODS Tools – Fannie Mae.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
SG scmGalaxy Author: KaliPrasad / Rajesh Kumar
Anjana & Shankar September,2010 Introduction to Programming Tools.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
See Build, See Build Run Run Build Run Hudson - Continuous Integration Vincent Batts SELF 2010.
ALM Deployment Pipeline Implementation. Create a Repeatable, Reliable Process for Releasing Software. Automate Almost Everything Keep Everything in Version.
1 © Agitar Software, 2007 Automated Unit Testing with AgitarOne Presented by Eamon McCormick Senior Solutions Consultant, Agitar Software Inc. Presented.
Continuous Integration for Databases Steve Jones SQLServerCentral Red Gate Software.
Jenkins 2.x Chris Vogel. Agenda O Jenkins background O Installation O Jenkins 2.x highlights O Build pipelines O Pipeline DSL O Multibranch plugin.
Automated Build and Test
Build Fundamentals and Continuous Integration
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Open-O Integration Project Introduction
Continuous Integration (CI)
Trends like agile development and continuous integration speak to the modern enterprise’s need to build software hyper-efficiently Jenkins:  a highly.
Delphi or C++ Builder, with Subversion and Jenkins
Revision Control, Automated Testing and Docker RSE Conference 2017
DevOps Deep Dive DevOps Deep Dive What you will learn
Continuous Integration For Databases
Zlatko Stamatov JavaSkop 13 December 2015
Lunch & Learn: Are you letting your users be your testers?
Continuous deployment best practices, methods and tools.
Continuous Integration in a Java Environment
Module 01 ETICS Overview ETICS Online Tutorials
Continuous Integration
Continuous Integration Tool
Continuous Integration
Presentation transcript:

Lecture XIII: Continuous Integration CS 4593 Cloud-Oriented Big Data and Software Engineering

2 Continuous Integration  We introduced Continuous Deployment  Continuous Update for the whole software process: Continuous Integration

Continuous Integration Teams integrate their work multiple times per day. Each integration is verified by an automated build Significantly reduces integration problems Develop cohesive software more rapidly Source: Martin Fowler

Five Principles of Continuous Integration Environments based on stability Maintain a code repository Commit frequently and build every commit Make the build self-testing

Environments based on stability Create server environments to model code stability Promote code to stricter environments as quality improves.

Production Environment Hardware Application servers – 8 application server 12 cores, 48 GB RAM – 10 web server 2 cores, 2 GB RAM Database servers – 4 web databases 4 cores, 16 GB, 2 SSD – 1 application database 12 cores, 48 GB RAM, 15 SSD

Stage Environment Hardware Application servers – 7 application server 4 cores, 4 GB RAM – 2 web server 2 cores, 2 GB RAM Database servers – 1 web database 4 cores, 16 GB, 8 SAS – 1 application database 8 cores, 16 GB RAM, 16 SATA Continuous Integration Server 2 cores, 4 GB RAM, 1 SATA

Test Environment Hardware Each team of 8 developers has a test environment – VM server 4 cores, 16 GB RAM – Database servers 4 cores, 24 GB RAM, 8 SATA drives Continuous Integration Server 8 cores, 16 GB RAM, 1 SATA drive

Dev Environment Hardware Application servers – Workstations with 4 cores, 8 GB RAM – One per developer Database servers – Shared with Test environment

Commit Frequently Build Every Commit Change your habits – Commit small, functional changes – Unit tests! – Team owns the code, not the individual

The code builds on my box... Source code repository is the source of record Build server settles disputes – Only gets code from Repo Build server the final authority on stability/quality

Build every commit Why compile frequently? Agile principles – If it hurts, do it more often. – Many difficult activities can be made much more straightforward by doing them more frequently. – Reduce time between defect introduction and removal Automate the build – Key to continuous integration

Add testing to build Individual programmers <50% efficient at finding their own bugs Multiple quality methods = more defects discovered – Use 3 or more methods for >90% defect removal Most effective methods – design inspections – code inspections – Testing Source:

Self Testing Builds System Tests – End-to-end test – Often take minutes to hours to run Unit tests – Fast No database or file system – Focused Pinpoint problems – Best method for verifying builds

Automated Quality with Continuous Integration Static code analysis – Looks for common java bugs (Findbugs, PMD) – Check for code compliance (Checkstyle) Unit test analysis – Measure coverage (Cobertura) – Look for hotspots, areas of low testing and high complexity (SONAR)

Build Server Hardware Maven and Java = lots of memory Compile and unit test = lots of CPU Static analysis = lots and lots of CPU 8 cores, 16GB RAM, 2 SATA Ubuntu Linux 8 parallel builds KEEP IT FAST

Free Continuous Integration Servers Cruise Control (ThoughtWorks) – Yucky XML configuration – Commercial version (Cruise) is a rewrite Continuum (Apache) – Great Maven support – No plugins, ok user interface, and slow builds Hudson (Oracle) – Self updating and easy to administor – Many useful plugins – Great user interface – Scale out with additional nodes – Best by a wide margin

Jenkins for Continuous Integration Jenkins – open source continuous integration server Jenkins ( ishttp://jenkins-ci.org/ Easy to install Easy to use Multi-technology Multi-platform Widely used Extensible Free

Jenkins for a Developer Easy to install Download one file – jenkins.war Run one command – java –jar jenkins.war Easy to use Create a new job – checkout and build a small project Checkin a change – watch it build Create a test – watch it build and run Fix a test – checkin and watch it pass Multi-technology Build C, Java, C#, Python, Perl, SQL, etc. Test with Junit, Nunit, MSTest, etc.

Developer demo goes here… Create a new job from a Subversion repository Build that code, see build results Run its tests, see test results Make a change and watch it run through the system Languages Java C Python

More Power – Jenkins Plugins Jenkins has over 300 plugins Software configuration management Builders Test Frameworks Virtual Machine Controllers Notifiers Static Analyzers

Jenkins Plugins - SCM Version Control Systems Accurev Bazaar BitKeeper ClearCase Darcs Dimensions Git Harvest MKS Integrity PVCS StarTeam Subversion Team Foundation Server Visual SourceSafe

Jenkins Plugins – Build & Test Build Tools Ant Maven MSBuild Cmake Gradle Grails Scons Groovy Test Frameworks Junit Nunit MSTest Selenium Fitnesse

Jenkins Plugins – Analyzers Static Analysis Checkstyle CodeScanner DRY Crap4j Findbugs PMD Fortify Sonar FXCop Code Coverage Emma Cobertura Clover GCC/GCOV

Jenkins Plugins – Other Tools Notification Twitter Campfire Google Calendar IM IRC Lava Lamp Sounds Speak Authorization Active Directory LDAP Virtual Machines Amazon EC2 VMWare VirtualBox Xen Libvirt

Jenkins for Teams Multi-configuration jobs Multi-stage jobs Swarms to dynamically contribute capacity