quickstart for continuous integration

22
Quickstart for CONTINUOUS INTEGRATION

Upload: fabricio-epaminondas

Post on 16-Jul-2015

582 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Quickstart for continuous integration

Quickstart for

CONTINUOUS INTEGRATION

Page 2: Quickstart for continuous integration

01 Introduction

What is CI?

Page 3: Quickstart for continuous integration

Continuous Integration objectives 3

• Support team work integration: • Component x Software x Infrastructure

• Anticipate integration phase • Short & fast integration cycles • Significantly reduce integration problems and

allows a team to be more productive. • Accelerate software development and release

01

Page 4: Quickstart for continuous integration

Benefits 4

• Anticipating risks • Early execution of the integration cycle, not only at the

pre-release stage. • Radically reducing errors

• Test practice leads to product maturity. • Fast and continuous feedback

• Reporting, metrics and status in minutes, not hours or days.

• Lowering release stress • Release in a few weeks not months

• Powering cross-team collaboration • Self-service builds for developers, testers, operations,

business people and others

01

Page 5: Quickstart for continuous integration

501

“Continuous Integration has become a mainstream technique for software development”

(Martin Fowler, 2006)

Page 6: Quickstart for continuous integration

How do I start?

02 Getting started!

Build & Scripting Tools

"

Configuration Management

#CI Tool

>Playground

%Code Repository

Page 7: Quickstart for continuous integration

Code Repository 702

%

Private hosting Hosting sites

github.com bitbucket.org code.google.com sourceforge.net assembla.com

Page 8: Quickstart for continuous integration

Building & Scripting 8

!

Building Scripting• Tasks automation:

operating system tasks, releasing steps, publishing artifacts, deployment scripting

• Dependency Management • Build • Test • Packaging • Deployment

02

Do not rely on IDE settings, use Command-Line Interface (CLI) like a boss

Page 9: Quickstart for continuous integration

Choosing the right toolkit 9

Building Tools Scripting Languages

Platform based Windows batch Linux bash, shell

Object-oriented Ruby JavaScript Python Groovy

Javascript: Grunt, Gulp

Java: Ant, Maven, Gradle

.NET: MSBuild

!

02

Page 10: Quickstart for continuous integration

Configuration management 10

"

• Externalized application configuration: files, environment variables, etc.

• Define multiple application configuration profiles • Local development & unit testing • CI build & integration testing • Releasing for staging, production

• Integration tests may require some external tools and database setup.

02

Page 11: Quickstart for continuous integration

Sample grails data source configuration 11

"

02

Page 12: Quickstart for continuous integration

Playground 12

>

Dedicated Machine Distributed

CI Server + App build stack+ App runtime stack

CI ServerApp X stack

App Y stack

Server-side infra structure models

QExternal Devices

02

Page 13: Quickstart for continuous integration

Playground: Keep it Simple 13

>

• Virtualize wherever possible • You can found some VMs ready to use on the

market: Amazon AWS, Bitnami.com…

• Keep a manifest file for the application stack, aka README

• Minimum software requirements • Operating system version • Configuration updates • Installation steps

• build stack • runtime stack

02

Page 14: Quickstart for continuous integration

CI by Jenkins

03 Practice

Page 15: Quickstart for continuous integration

Configuring a CI system with Jenkins 15

• Building/testing software projects continuously • Monitoring executions of externally-run jobs

03

What is Jenkins?

jenkins-ci.org

Page 16: Quickstart for continuous integration

Create a Job / Task 16

• Parameters • Pre-conditions • Source Code • Triggers • Build steps:

• No tricks here please • Just call the scripts and tools • Treat scripts as source code

• Post conditions • Post build tasks

03

Page 17: Quickstart for continuous integration

Statistics, reports and notifications 17

Build status

03

Page 18: Quickstart for continuous integration

18

Code Coverage

Statistics, reports and notifications

Reference: [1] JaCoCO Plugin: https://wiki.jenkins-ci.org/display/JENKINS/JaCoCo+Plugin

03

Page 19: Quickstart for continuous integration

19

Integration with Code Quality Management Tools

Statistics, reports and notifications

Reference: [1] Sonarqube: http://www.sonarqube.org

03

Page 20: Quickstart for continuous integration

Comments 20

&#ContinuousDelivery

#ContinuousDeployment

#Self-service deployment

#ContinuousTesting

Page 21: Quickstart for continuous integration

See more…

• Continuous Integration practices

• References: [1] http://martinfowler.com/articles/continuousIntegration.html

[2] http://refcardz.dzone.com/refcardz/continuous-delivery-patterns

[3] http://guide.agilealliance.org/guide/ci.html

' fabricioepa.wordpress.com

Page 22: Quickstart for continuous integration

Contact

FABRICIO EPAMINONDAS ( linkedin.com/in/fabricioepa

' fabricioepa.wordpress.com

) @fabricioepa