Continuous Integration and Delivery at NSIDC



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

Continuous Integration

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Continuous Integration: A case study

SOFTWARE DEVELOPMENT BASICS SED

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

Improving your Drupal Development workflow with Continuous Integration

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

Git Branching for Continuous Delivery

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

Source Control Systems

Database Build and Release will get started soon

Achieving Continuous Integration with Drupal

DevOps. Building a Continuous Delivery Pipeline

Software configuration management

Advanced Computing Tools for Applied Research Chapter 4. Version control

Software Configuration Management and Continuous Integration

Continuous Integration and Delivery. manage development build deploy / release

Content. Development Tools 2(63)

StriderCD Book. Release 1.4. Niall O Higgins

Continuous Integration. CSC 440: Software Engineering Slide #1

CoDe:U Git Flow - a Continuous Delivery Approach

Continuous Integration

Version Control. Version Control

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Version Uncontrolled! : How to Manage Your Version Control

Building a Continuous Integration Pipeline with Docker

Continuous Integration: Put it at the heart of your development

Brakeman and Jenkins: The Duo Detects Defects in Ruby on Rails Code

Mobile Development with Git, Gerrit & Jenkins

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Jenkins: The Definitive Guide

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

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

TEST AUTOMATION FRAMEWORK

Integration in Practice

Practical continuous deployment

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

Version Control Your Jenkins Jobs with Jenkins Job Builder

DevOps Course Content

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII.

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

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

SMZ. SocialMedia. Z olutions

FEEG Applied Programming 3 - Version Control and Git II

Software Continuous Integration & Delivery

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

Continuous Delivery. Alejandro Ruiz

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Application Release Automation (ARA) Vs. Continuous Delivery

Mastering Continuous Integration with Jenkins

Continuous Delivery of Debian packages. Michael Prokop

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

Version Control with Subversion

Software infrastructure for Java development projects

Fundamentals of Continuous Integration

Continuous Delivery Workshop

Continuous Keylane

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

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

Meister Going Beyond Maven

In depth study - Dev teams tooling

Putting It All Together. Vagrant Drush Version Control

Implementing Continuous Integration Testing Prepared by:

The Deployment Production Line

Visual Studio - Continuous Integration

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Introduction to Programming Tools. Anjana & Shankar September,2010

Best Overall Use of Technology. Jaspersoft

Continuous Integration & Feature Branches

Continuous Integration using Docker & Jenkins

GENiC. Deliverable D5.1 Development & Integration guidelines including integration environment & means. Dissemination Level: Public

Build management & Continuous integration. with Maven & Hudson

Software Delivery Integration and Source Code Management. for Suppliers

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

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

Software Configuration Management Best Practices for Continuous Integration

Implementing Continuous Integration and Cloud Server Infrastructure for an International Enterprise Based In Finland

Case Study: Using Jenkins to Build WebSphere Portal Applications for the Enterprise. #jenkinsconf. Jenkins User Conference Boston #jenkinsconf

Version control with GIT

Delivering Quality Software with Continuous Integration

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

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Solving the Software Quality Challenges of Agile Development

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

<Insert Picture Here> TDD on a Coherence project

Automated build service to facilitate Continuous Delivery

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

MATLAB & Git Versioning: The Very Basics

Transcription:

National Snow and Ice Data Center Supporting Cryospheric Research Since 1976 Continuous Integration and Delivery at NSIDC Julia Collins National Snow and Ice Data Center Cooperative Institute for Research in Environmental Sciences, University of Colorado, Boulder, CO

The Goal Continuous integration and Continuous delivery? 2

Definitions Continuous integration: Merge changes frequently into shared code base (and run unit/ integration tests) to catch conflicts early. Requires: Code repository Automated build (build all commits) Automated tests If fail, fail fast 3

Definitions Continuous delivery: A software development discipline where you build software in such a way that the software can be released to production at any time. http://martinfowler.com/bliki/continuousdelivery.html 4

Definitions Continuous deployment: Passing builds are automatically deployed to the production environment http://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/ 5

Development Context Iterative development with frequent feature releases Release Release Time 6

Jenkins (was Hudson) 7

Jenkins Open source (MIT license) Core installation great for running scripts Can run on a schedule, poll SCM for changes Can be extended via plugins. Many (many many) plugins already exist. Cons: Plugin developers not necessarily writing with other (unrelated) plugin behaviors in mind. 8

Jenkins Build Build Job Build/unit test A Build Job Acceptance test Build Job Deploy 9

Another definition Artifact The by-product of the build; the testable entity tar file jar file SCM tag or revision number a running virtual machine 10

Artifacts We had no artifact repository Solution: Roll our own Result: Overhead added to job configurations to support the artifact handling 11

One day you look around... http://xkcd.com/1319/ 12

But really, automation is good Consistent steps, no matter who s running the build History and reproducibility Build configuration conveys information about application environment and structure 13

Meanwhile... Moving from svn towards git Bitbucket repositories Take advantage of git workflows 14

Branching Strategies Master (trunk): Always in deployable state Feature A Feature B Merge master into Feature A 15

Many jobs, one build server Applications using different versions of same language or libraries Conflict between projects needing upgrades vs. those frozen at a particular version Would like option to build, test and run applications on different OS than default 16

The Wish List Feature workflow: The ability to build/test/approve a feature branch. The ability to merge master into a branch prior to build/test. The ability to merge all successfully integrated (built/ tested) feature branches into master for review within the QA environment. The ability to push the local master (with all approved feature changes) to origin/master on the remote repository, along with tags indicating released code. 17

The Wish List Build and deployment: The ability to create multiple build environments to satisfy different application needs for language versions and supporting libraries. A continuous build environment that produces/ manages deployment-ready artifacts, including managing the state of approval (or not). Deployment: Ops must be able to identify the approved artifact(s) and run the required steps for deployment. Deployment: Ops must be able to easily roll back to a previous release. 18

Road Map Stick with Jenkins, OR Transition to a different build server 19

Jenkins in the future Use existing plugins to provide needed functionality (artifact handling, master/slave implementation for multiple build agents) Contribute to plugin development Move in-line shell commands to application task runners (remove redundancies) 20

Bamboo (Atlassian) Build Plan Run in order Stage 1 Stage 2 Job 1 Job 2 Run in order task 1 task 2 task 3 task 1 task 2 task 3 Stage 3 Job 3 task 1 Jobs run in parallel (different agents) 21

Bamboo 22

Bamboo 23

The Critical Facts Jenkins: free TeamCity Free edition: 3 build agents, 20 build configurations $299: 1additional build agent, 10 additional configs $1999+: Enterprise options Bamboo Hosted vs. local options $10: No remote agents, 10 jobs $800: 1 remote agent, unlimited jobs $2200: 4 remote agents, unlimited jobs 24

Lessons Learned Build configurations tend to proliferate. With some effort, Jenkins can support many requirements. It s not just using the right tool, it s how you use it. 25

References Jenkins: http://jenkins-ci.org TeamCity: http://www.jetbrains.com/teamcity/ Bamboo: https://www.atlassian.com/software/bamboo CI: http://martinfowler.com/bliki/ ContinuousDelivery.html CD: http://continuousdelivery.com/2010/08/ continuous-delivery-vs-continuous-deployment/ Julia Collins collinsj@nsidc.org 26