Beginners guide to continuous integration. Gilles QUERRET Riverside Software



Similar documents
Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

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

Continuous Integration: A case study

Continuous Delivery. Alejandro Ruiz

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration

Continuous Integration with Roundtable TSMS

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

Database Build and Release will get started soon

Build management & Continuous integration. with Maven & Hudson

Software configuration management

Continuous Integration and Delivery at NSIDC

Continuous Integration

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

Jenkins: The Definitive Guide

SOFTWARE DEVELOPMENT BASICS SED

Maven or how to automate java builds, tests and version management with open source tools

Delivering Quality Software with Continuous Integration

Software infrastructure for Java development projects

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

Content. Development Tools 2(63)

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

Introduction to Programming Tools. Anjana & Shankar September,2010

Continuous Keylane

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

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

Mobile Development with Git, Gerrit & Jenkins

Software Continuous Integration & Delivery

Continuous Integration using Docker & Jenkins

Meister Going Beyond Maven

DevOps Course Content

Best Overall Use of Technology. Jaspersoft

Mastering Continuous Integration with Jenkins

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

Continuous Integration. CSC 440: Software Engineering Slide #1

Continuous Integration The Full Monty Artifactory and Gradle. Yoav Landman & Frederic Simon

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

CONTINUOUS INTEGRATION. Introduction

ACCELERATE DEVOPS USING OPENSHIFT PAAS

Continuous Integration

Software Construction

TeamCity A Professional Solution for Delivering Quality Software, on Time

NeXUS REPOSITORY managers

Hudson configuration manual

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

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

Source Control Systems

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

Java Software Quality Tools and techniques

Continuous Integration (CI)

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

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

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

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

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

Visual Studio - Continuous Integration

Continuous Integration Multi-Stage Builds for Quality Assurance

Software Configuration Management

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

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

Continuous Integration For Fusion Middleware

Continuous Integration

Software Configuration Management and Continuous Integration

Application Release Automation (ARA) Vs. Continuous Delivery

Continuous Delivery. Ariel Alonso, IPC

ALERT installation setup

Integration in Practice

Continuous Integration

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

Software Development In the Cloud Cloud management and ALM

Agile ALM. Lightweight tools and Agile strategies MANNING MICHAEL HUTTERMANN. Shelter Island

Continuous Delivery Maturity Model

My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies

Implementing Continuous Integration Testing Prepared by:

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

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

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

Unit Testing webmethods Integrations using JUnit Practicing TDD for EAI projects

Efficient Automated Build and Deployment Framework with Parallel Process

Continuous Integration Processes and SCM To Support Test Automation

Continuous Integration on System z

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

Continuous Integration: Put it at the heart of your development

Build Management. Context. Learning Objectives

Continuous Integration & Feature Branches

Performance TesTing expertise in case studies a Q & ing T es T

Jenkins on Windows with StreamBase

SOA-14: Continuous Integration in SOA Projects Andreas Gies

CI:IRL. By Beth Tucker Long

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

S609. RDz and Source Control Management Systems

Practical continuous deployment

Transcription:

Beginners guide to continuous integration Gilles QUERRET Riverside Software

About the speaker Working with Progress and Java since 10 years Started Riverside Software 7 years ago Based in Lyon, France Focused on technical expertise and continuous integration in those environments Code analysis for OpenEdge

http://geekandpoke.typepad.com

define:continuous integration Continuous Integration is a software development practice of performing software integration frequently several times a day, in fact. Ideally, your software application or system should be built automatically after each commit into a shared version control repository. Upon each successful build, the system integrity should be verified using automated tests that cover if not all, then at least most of the functionality. If some tests fail, the developer responsible is notified instantly and the problem can be identified and solved quickly. Using this approach, you can deliver working and reliable code to the customer much faster, while also mitigating the risk of releasing unstable, buggy software to your users.

define:continuous integration

5 steps to continuous integration Source code repository 1 Build automation 2 CI server setup 3 Automated deployment 4 Automated tests 5

Use the right tools

Step 1 : Source code repository Keeps track of every change in your codebase Using homegrown solution can be challenging in a continuous integration environment Lots of tools on the market : CVS, Subversion, Mercurial, Perforce, BitKeeper, Roundtable Side note : in case you don t know about distributed code repositories, have a look at http://www.hginit.com for a good introduction

Step 1 : Source code repository If you can generate something, don t store it in your SCM It will be part of your build script Separate requirements and dependencies OpenEdge is a requirement, pdf_include is a dependency Don t forget database versioning Commit as much as possible, using branches if necessary Associate a bugtracker to your SCM

Step 2 : Build automation Architect / Developer Studio / AppBuilder ARE NOT build tools Just after checking out source code, a single command line should be enough to generate a standalone binary Common build tools are : Makefiles, shell scripts, Ant, Maven, Gradle

Step 2 : Build automation Looking for something stable, flexible and portable across platforms? Use Ant! Ant is an open-source product to deal with software builds XML based syntax, and provides lots of standard tasks PCT (Progress Compilation Toolkit) is an opensource extension to deal with the OpenEdge environment

Step 2 : Build automation <PCTCreateBase dbname="ged" destdir="${db}" codepage="utf" schemafile="db/schema1.df,db/schema2.df" structfile="db/struct.st" blocksize="4" dlchome="${dlc}" /> <PCTRun procedure="src/initdb.p" paramfile="conf/param.pf" dlchome="${dlc}" cpstream="utf-8"> <DBConnection dbname="ged" dbdir="${db}" singleuser="yes" /> <DBConnection dbname="cust" dbdir="${db}" singleuser="yes" /> </PCTRun>

Step 2 : Build automation <PCTCompile destdir="${build}" graphicalmode="true" dlchome="${dlc}" md5="false" minsize="false" cpstream="iso8859-15" inputchars="16384" debuglisting="true"> <fileset dir="src/core" includes="**/*.p,**/*.w" /> <fileset dir="src/module1" includes="**/*.p,**/*.w" /> <fileset dir="src/oo" includes="**/*.cls" /> <PCTConnection dbname="ged" dbdir="${db}" /> <PCTConnection dbname="cust" dbdir="${db}" /> <propath> <pathelement location="src/core" /> <pathelement location="src/oo" /> </propath> </PCTCompile>

Step 3 : CI server setup Many products, but same functionalities Define and trigger jobs Store deliverables (and keep history) Make them easily accessible Keep users informed of build result Choosing a CI server : Free or not Integration with your tools Plugins

Step 3 : CI server setup Cruise control Hudson / Jenkins Teamcity (JetBrains) Bamboo (Atlassian)

Step 3 : CI server setup Always use a clean server Use distributed jobs Define a job for every product and every environment (branches / clones) Keep deliverables only for production jobs. Keep only a dozen for integration Only send alerts for failures!

Step 4 : Automate deployment Use only what has been generated during the build process Always deploy to a clean server Every deliverable generated by the CI server should be deployed

Step 4 : Automate deployment Available in VMWare ESX Clones, snapshots and remote execution are your friends! Define clean VM for every target OS Define snapshots to be able to improve configuration New clone for a new job Remote execution to execute deployment

Step 5 : tests Unit testing User interface testing API testing Regression testing Load testing Security testing

Demo

Questions?

Ant : http://ant.apache.org PCT : http://code.google.com/p/pct Jenkins : http://jenkins-ci.org And contact me directly (g.querret@riversidesoftware.fr) if you want additional informations