Continuous Integration and Bamboo. Ryan Cutter CSCI 5828 2012 Spring Semester



Similar documents
Continuous Integration

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration: Improving Software Quality and Reducing Risk. Preetam Palwe Aftek Limited

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Software Construction

Building, testing and deploying mobile apps with Jenkins & friends

Delivering Quality Software with Continuous Integration

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Continuous Integration with Jenkins. Coaching of Programming Teams (EDA270) J. Hembrink and P-G. Stenberg [dt08jh8

Continuous Integration: A case study

Git Branching for Continuous Delivery

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration: Put it at the heart of your development

Introduction to Programming Tools. Anjana & Shankar September,2010

Software Continuous Integration & Delivery

Build management & Continuous integration. with Maven & Hudson

Automated performance testing using Maven & JMeter. George Barnett, Atlassian Software

TeamCity A Professional Solution for Delivering Quality Software, on Time

Continuous Integration and Delivery at NSIDC

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

Continuous integration with Jenkins CI

Continuous Integration For Real: The Perforce Java Platform. Hamish Reid Perforce Software Inc.

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Continuous Delivery. Alejandro Ruiz

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Jenkins: The Definitive Guide

Massively! Continuous Integration! A case study for Jenkins at cloud-scale

BuildBot. S.Cozzini/A.Messina/G.Giuliani. And Continuous Integration. RegCM4 experiences. Warning: Some slides/ideas.

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Mobile Development with Git, Gerrit & Jenkins

Software Development In the Cloud Cloud management and ALM

JIRA Administration Best Practices

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

ALERT installation setup

Automate Your Deployment with Bamboo, Drush and Features DrupalCamp Scotland, 9 th 10 th May 2014

The Unix-like Build Pattern

Modern practices TIE-21100/

ALM: Continuous Integration. José Almeida, Microsoft

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

SOFTWARE DEVELOPMENT BASICS SED

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Kevin Lee Technical Consultant As part of a normal software build and release process

Continuous Delivery. Ariel Alonso, IPC

Meister Going Beyond Maven

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Software infrastructure for Java development projects

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

SMZ. SocialMedia. Z olutions

Best Overall Use of Technology. Jaspersoft

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Are You Failing Fast Enough? Tips & tricks for a speedy build system

Software Configuration Management and Continuous Integration

Maven the Beautiful City. Healthy, Viable, and Productive Build Infrastructures

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Integration in Practice

Break It Before You Buy It!

Continuous Delivery Maturity Model

Introduction and Agenda

Agile Austin Dev SIG. June Continuous Integration (CI)

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

Continuous Integration (CI) and Testing - Configuring Bamboo, Hudson, and TestMaker

Continuous Integration on System z

Image Credit:

Jenkins on Windows with StreamBase

Nick Ashley TOOLS. The following table lists some additional and possibly more unusual tools used in this paper.

"Build and Test in the Cloud "

Effektiver Tool-Einsatz

Acctesting Test Campaign Edition Continuous Delivery

The Benefits of Utilizing a Repository Manager

Implementing Continuous Integration Testing Prepared by:

Welcome Message. Overview

Automation using Selenium

Software Configuration Management. Slides derived from Dr. Sara Stoecklin s notes and various web sources.

Agile Web Application Testing

We ( have extensive experience in enterprise and system architectures, system engineering, project management, and

Continuous Integration Comes to China.

Fundamentals of Continuous Integration

Java Software Quality Tools and techniques

Hudson configuration manual

CSE 70: Software Development Pipeline Version Control with Subversion, Continuous Integration with Bamboo, Issue Tracking with Jira

Triple-E class Continuous Delivery

Whitepaper. Continuous Integration Tools Applying Best Practices to the Toolchain

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

EUROPEAN ORGANIZATION FOR NUCLEAR RESEARCH CERN ACCELERATORS AND TECHNOLOGY SECTOR

@CodenvyHQ

CONTINUOUS INTEGRATION

Content. Development Tools 2(63)

9/11/15. What is Programming? CSCI 209: Software Development. Discussion: What Is Good Software? Characteristics of Good Software?

Source Control Systems

Upping the game. Improving your software development process

APP DEVELOPMENT ON THE CLOUD MADE EASY WITH PAAS

Software Configuration Management Best Practices for Continuous Integration

<Insert Picture Here> What's New in NetBeans IDE 7.2

The Tools For Continuous Delivery

The Benefits of Deployment Automation

How To Set Up Wiremock In Anhtml.Com On A Testnet On A Linux Server On A Microsoft Powerbook 2.5 (Powerbook) On A Powerbook 1.5 On A Macbook 2 (Powerbooks)

Transcription:

Continuous Integration and Bamboo Ryan Cutter CSCI 5828 2012 Spring Semester

Agenda What is CI and how can it help me? Fundamentals of CI Fundamentals of Bamboo Configuration / Price Quick example Features / Discussion My Takeaways on CI

Continuous Integration Originated in Extreme Programming but many Agile workplaces use it Deploying continuously is essential to streamlining the feedback loop, a core Agile tenant CI usually means an entire project is rebuilt upon any change to code base Swap long, laborious integration efforts with short, automated ones Sound like a fair trade?

CI Benefits Bugs more obvious Assumes system tests tightly coupled with CI implementation Reduces risk Many non-agile projects are on time until they hit the testing stage! CI makes problems easier to predict and more obvious The earlier a problem is detected, the cheaper it is to resolve

CI Think of it this way The longer developers wait before integrating their code with each other, the higher the chance for diverging or fractured efforts Be concerned if you re not working with the latest code iteration every day Even intraday updates beneficial At least update and recompile before committing new code! http://weblogs.asp.net/plip/archive/2006/11/16/who-broke-the-build.aspx

CI In Action 1. Check out code from source control 2. Make changes, compile locally, repeat 3. Commit code back into source control 4. CI tools automatically build project on separate machine 5. If compilation is successful and tests pass, you re done 1. If not, at least the problem was caught quickly! 6. [Optional] Automatically deploy somewhere

Martin Fowler s take on CI Published 6 years ago, still quoted extensively http://martinfowler.com/articles/continuousintegration.html 1. Maintain single source repo 2. Automate the build 3. Make your build self-testing 4. Everyone commits to the mainline every day 5. Every commit should build the mainline on an integration machine

Martin Fowler s take on CI 6. Keep the build fast 7. Test in a clone of the production environment 8. Make it easy for anyone to get the latest executable 9. Everyone can see what s happening 10. Automate deployment

Deeper Dive Maintain single source repo Hopefully this goes without saying git has done a tremendous job making source control management ubiquitous Plenty of SCM options available Source code on a developer s local machine grows more stale with every hour that passes without an update Integration risks obviously go up

Deeper Dive Automate the build Developers shouldn t have to do anything manually after committing code If they do, you re courting trouble Should be able to build individual portions of project

Deeper Dive Make your build self-testing Suite of automated tests check the code base Requires buy-in from developers to seek high coverage JUnit a good example of unit-testing framework Write new functionality then write a JUnit test function Helps spot problems early and without human discovery

Deeper Dive Test in a clone of the production environment Mimic production configuration to the greatest extent possible All libraries, drivers, support apps (like databases) should be the same as what you use to deploy Virtualization (such as using software like VMware) is a great way to increase coverage to many different possible environments You don t worry about setting up these environments it s all magic as far as you re concerned

Deeper Dive Automate deployment Continuous Integration is not the same thing as Continuous Deployment but it makes sense to consider the two concurrently Fowler focuses on deploying to production (insert debate here) remember internal deployment just as important < 30 mins after code committed, change should be available If it s a web app, it should be on a test/qa server If it s a desktop app, it should be available for download (on Nexus, for example) or running in a virtualized environment

More on Deployment Difficult to overstate the value of continuous or one click deployment If you re manually copying RPMs, you re probably doing it wrong CI systems support custom scripting to integrate this into automated workflows Not only that, but they ll log these operations (more on this during the Bamboo discussion)

CI Solutions Jenkins Open source (MIT License) Forked from Hudson following dispute with Oracle AnthillPro Been around for a long time, very mature Full enterprise solution Bamboo We ll focus on this product Why? Because I like it

Bamboo: Highlights Made by Atlassian They also produce JIRA and Confluence, among others Very popular dev tool company Out of the box support for Java,.NET, PHP, Javascript among others Completely automated with slick web UI Ability to deploy parallel builds to multiple agents Build pipelines make it easy to create workflows Analytical tools help highlight what went wrong Continuous deployment is snap!

Bamboo: Configs/Pricing OnDemand and Download versions OnDemand is AWS-hosted solution Downloads for Unix/Linux, Mac, Windows available 30 day free trial For a typical startup producing a normal web app (imagine yet another iteration of social ), for unlimited jobs and 1 10 build agents: OnDemand: $50 - $250/month Download: $800 - $4,000/month Prices as of March 2012 Higher price points for up to 100 agents available

Bamboo OnDemand With Elastic Bamboo your build agents live on EC2 Integrates with local source repo The catch is you need to purchase FishEye and Crucible OnDemand as well (though this restriction is being removed shortly) FishEye is a better source history with hooks into JIRA Crucible assists in code reviews

Bamboo: Setup Configure the default local agent Sets JDK, builder, etc capabilities Create a new plan Build plan is the recipe for a build Defines what gets built (svn repo), how build is triggered, what builder (compiler) to use, artifacts to be created, etc Always associated with a project Define the trigger that will initiate the build Next screen shows screenshot of this step

Bamboo: Create a plan

Bamboo: Execution After plan run, everything can be evaluated Test results Build log Build artifacts

Bamboo: Execution Failed builds do not simply result in a failure message Get deep analytics into trouble sports Stack traces Drill into context by viewing changes to build attempt with JIRA and Fisheye

Bamboo: Release Build release pipeline in stages to facilitate automated release Release using JIRA, build with Bamboo Seeing a trend here? Bamboo and JIRA are tightly coupled

Bamboo: Capabilities Integrates with many source control systems Subversion, Mercurial, Git, Perforce, CVS Same for the popular build systems Ant, Maven, Make, Command Line, MSBuild Ditto for test automation Junit, Selenium, PHPUnit

Bamboo: Integration Atlassian not surprisingly provides deep hooks into its other products JIRA Able to associate tasks with builds, view dashboards/wallboards (see next slide) If you use JIRA or Bamboo, you really need to go for the another Confluence Track builds in your wiki Clover Monitor historical code coverage in your build

Bamboo: Integration IDE Plugins for Eclipse and IntelliJ Allows you monitor builds through your IDE Blitz.io, Tomcat, Xcode, Vmware API for further custom development REST service too! Extremely simple to build custom tools using REST to view status, kick off new builds, etc

Bamboo: Builds Build Triggers Builds can be started with commit-triggers, schedule, and dependency triggers Build Dependencies Share artifacts between compilation, testing, and deployment stages Queue Management Fine grain control over queue Re-order queue, set timeouts, detect hung builds

Bamboo: Notifications Everything you would expect from a CI system SMS Email RSS IM Two-way IM permits adding comments/labels to build results without entering Bamboo

Bamboo: Wallboard Imagine this on a 55 LCD in your developers space!

My Musings These are only opinions disregard as desired! Almost every team needs someone dedicated to CI/build management Not a collateral duty or you broke the build so now you re the build manager these are paths to failure (or at least mediocrity) Gold plating CI is a force multiplier so don t skimp on it Not just manpower throw good SW/HW at it Builds should be compiled and deployed quickly Developers should be allowed to focus on coding and reap the benefits of good CI

Questions? Very thorough Bamboo documentation available: http://www.atlassian.com/software/bamboo/overview Additional information about CI used in this brief: http://www.ibm.com/developerworks/java/tutorials/j-cq11207/