Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation



Similar documents
Continuous Delivery. Alejandro Ruiz

Continuous Integration: A case study

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

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

Leveraging Rational Team Concert's build capabilities for Continuous Integration

Continuous Integration

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

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

Continuous Integration: Put it at the heart of your development

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Integration in Practice

Continuous Integration and Delivery at NSIDC

Software Construction

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

Continuous Integration on System z

Enabling Continuous Delivery by Leveraging the Deployment Pipeline

Build management & Continuous integration. with Maven & Hudson

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

Software infrastructure for Java development projects

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

SOFTWARE DEVELOPMENT BASICS SED

Continuous Integration. CSC 440: Software Engineering Slide #1

DevOps Course Content

Jenkins: The Definitive Guide

Software Configuration Management and Continuous Integration

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

Modern practices TIE-21100/

ACCELERATE DEVOPS USING OPENSHIFT PAAS

Delivering Quality Software with Continuous Integration

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

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

Continuous Delivery for Force.com

Upping the game. Improving your software development process

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

Meister Going Beyond Maven

Continuous Delivery: implementation considerations. Léon Hagenaars-Keus Edwin van Dillen

Introduction to Programming Tools. Anjana & Shankar September,2010

Hudson configuration manual

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

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

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

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

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

Content. Development Tools 2(63)

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Data Center Automation with YADT

Mobile Development with Git, Gerrit & Jenkins

"Build and Test in the Cloud "

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Software Continuous Integration & Delivery

Software Development In the Cloud Cloud management and ALM

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

Enabling Continuous Delivery for Java Projects with Oracle Cloud Services (Oracle PaaS) Siva Rama Krishna Oracle India

Continuous integration End of the big bang integration era

Continuous Integration For Fusion Middleware

Implementing Continuous Integration Testing Prepared by:

Java Software Quality Tools and techniques

Continuous Delivery by example.net

DevOps Stack. Reid Holmes. Chris Parnin:

Continuous Integration using Docker & Jenkins

Continuous Delivery. Ariel Alonso, IPC

Fundamentals of Continuous Integration

DevOps. Jesse Pai Robert Monical 8/14/2015

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

Continuous Integration Multi-Stage Builds for Quality Assurance

Increasing frequency of releases to every week down from quarterly major releases

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

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

SMZ. SocialMedia. Z olutions

Continuous Integration Processes and SCM To Support Test Automation

Continuous integration with Jenkins CI

Know the Difference. Unified Functional Testing (UFT) and Lean Functional Testing (LeanFT) from HP

Continuous Integration in Kieker

The Role of Feedback in Continuous Integration, Continuous Delivery and Agile ALM

INCREASE YOUR WEBMETHODS ROI WITH AUTOMATED TESTING. Copyright 2015 CloudGen, LLC

ALM2013VS_ACC: Application Lifecycle Management Using Visual Studio 2013

Continuous Integration and Delivery. manage development build deploy / release

Building, testing and deploying mobile apps with Jenkins & friends

Automation and Virtualization, the pillars of Continuous Testing

Continuous Integration Optimizing Your Release Management Process

Web Developer Toolkit for IBM Digital Experience

Accelerate Software Delivery

Continuous Delivery Maturity Model

Application Lifecycle Management Using Visual Studio 2013 (SCRUM)

Fast Feedback: Jenkins + Functional and Non-Functional Mobile App Testing Without Pulling Your Hair

Software configuration management

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Achieving Continuous Integration with Drupal

Transcription:

Practicing Continuous Delivery using Hudson Winston Prakash Oracle Corporation

Development Lifecycle Dev Dev QA Ops DevOps QA Ops Typical turn around time is 6 months to 1 year Sprint cycle is typically 2 weeks to 4 weeks

Typical Sprint Cycle Sprint 1 Plan Develop Test Stage Reasonably working product Sprint 2 Plan Develop Test Stage Sprint 3 Plan Develop Test Stage

Further Thought Process Ø There are some greedy people out there Ø They can t wait until the end of the sprint cycle to get a working product Ø They want a working product on every commit Thus the Continuous Delivery concept was born

What is Continuous Delivery? A set of practices and principles aimed at building, testing and releasing software faster and frequently. Produce a deployable-to-production build regularly, probably on each commit. Every build is a potential release.

Commit to deploy In a Test Driven Development build pipeline, Continuous Integration is the first step and the end result is the Continuous Delivery. While Continuous Delivery promotes the concept of keeping your product in a deliverable state on each commit, Continuous Deployment takes it further. On each commit, the deliverable can be deployed to a production environment.

Typical Hudson CI Server Usage Continuous Integration Manual Testing Manual Delivery Source Repository Dev Build and Unit Test Package Repository QA Acceptance Test Functional Test Operations Deploy-QA Deploy-production Integration Test Deploy-performance Hudson is mostly tuned to focus on development teams

Build Pipeline Ø Commit SCM P1 Ø Build and Test Unit tests Static code coverage Packaging Integration tests UI tests Performance tests Regression tests Deployment tests (install, uninstall etc.) Manual exploratory tests Regulatory, compliance checks Clearance from UAT promote promote compile Unit-test package P2 P4 Run Integration test Deploy to perf Test environment Run UI, Regression UAT tests Deploy to integration Test environment Run perf test Deploy to Staging P5 P3 promote Ø Stage and Deploy Deploy to production

Setting up Hudson to do Continuous Delivery Dev Continuous Integration Build and Unit Test Source Repository Continuous Testing Automated Tests Acceptance Test Functional Test A Integration Test Continuous Delivery Automated Deployment Deploy-QA Deploy-production Deploy-performance Package Repository Resources Repository Identifying the relevant plugins and configuring the jobs to participate in the pipeline is critical.

Setting up CI Environment A Centralized SCM repositories (Git, SVN, CVS etc) Dedicated build servers Continuous Integration software (Hudson) Unit testing framework (junit, nunit etc) Build tool (Maven, Gradle, Ivy, Ant etc) Deployment environment (Application Servers) Build Dashboard (Hudson UI) Communication tool (E-mail, twitter, IRC etc) Deployment Tool

Effective practicing of CI SCM P1 Maintain a Single Source Repository. compile Unit-test package Automate the Build Make Your Build Self-Testing Everyone Commits To the Mainline Every Day Every Commit Should Build the Mainline on an Integration Machine Keep the Build Fast Test in a Clone of the Production Environment Make it Easy for Anyone to Get the Latest Executable Everyone can see what's happening Automate Deployment

Choosing Hudson Plugin for Effective practicing of CI http://wiki.eclipse.org/hudson-ci#hudson_plugins

Buildable Units Important guideline of CI is to build fast and give back feedback quickly. To achieve this Rather than building the entire source in one single job, divide the project sources into buildable chunks. Each chunk of software must be able to build independent of each other. The dependent chunks must be built separately and stored in an artifact repository manager for other software chunks to use them as dependencies. Each of the software chunks is a buildable unit and is built by a single Hudson job.

Sherwood Library Build Architecture

Setting up upstream-downstream builds Checkout_backend Checkout_rest WebApp UI Checkout_UI

Speeding up CI Builds Staged Builds The first stage would do the compilation and localized unit tests. The unit tests may be created with out any real time database or server connections to keep it fast. (Mockito, Powermock) In the second stage, the extended builds run different suits of tests, may be with real time server and database connections.

Build pipeline plugin

Cascading jobs

Monitor Test Trends Ready for Continuous Delivery In a CI build, the unit tests should never fail. During the initial stage of the project, the integration test may be in flux.

Monitor Quality Metrics Trend Code quality measurement is important in Continuous delivery. Improves the confidence of the product being deliverable state.

Automated Upload (FTP) As part of Build pipeline, often there may be requirements to copy configuration files or database schemas, test scripts, properties files, install scripts etc., which are part of a build to another machine to facilitate additional test run

Automated Execution (SSH) Execute commands on that remote machine to ready the machine for automatic deployment.

Application Server Automated Deployment (Application Servers)

Diamond build pattern P4 ui-test-job Deploystaging-job Regressiontest-job Deploy-prodjob promote Run UI, Regression UAT tests Deploy to production Deploy to Staging P5 acceptancetest-job triggers a job after all the downstream jobs are completed in parallel. This allows a pipeline to branch out to perform many steps in parallel, and then run another job after all the parallel jobs are finished.

Automated Promotion Though promoted build plugin provides opportunity to promote every build, typically the promotion process is done for a pipeline P2 promote Run Integration test Deploy to integration Test environment P3 Deploy to perf Test environment Run perf test

Hudson Book Part1: Practicing effective CI using Hudson Part2: Hudson plugin development http://www.amazon.com/ Hudson-Continuous-Integration- Practice-Burns/dp/ 0071804285