Continuous integration CloudParty 21 may 2014 - Milan

Preview:

DESCRIPTION

Un sistema di Continuous Integration fra progetti eterogenei Continuos Integration si riferisce alla pratica di aggiungere nuove feature nel codice e di testarlo non solo in modo isolato ma anche in piena integrazione con gli altri progetti durante il ciclo di sviluppo del software. Implementare un sistema automatizzato di CI prevede un repository con il codice sorgente utilizzato durante la fase di sviluppo ed uno strumento di CI che continui a fare polling del codice e controllarlo tramite i test in integrazione. Ma non basta quando ci sono progetti eterogenei che collaborano fra di loro, in questo talk vedremo specificatamente questo aspetto.

Citation preview

ROMA | LONDON| MILANO | PARIS | MADRID | REUS | BERLIN | BEOGRAD | ISTANBUL | SAN FRANCISCO | CIUDAD DE MÉXICO | SÃO PAULO | BOGOTÁ | MUMBAI

Un sistema di Continuous Integration fra progetti eterogenei

CloudParty 2014 - Deploy in Cloud - Milan 21 May

Simone Pasquini - @PasquiniSimone

2

Big Bang Integration

● Integration is done close to a release● Problems/Incompatibilities between the codes become evident at release

time

3

Continuous Integration

M.Fowler: Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.

● Integrate frequently● Automated build● Detect integration errors quickly

4

Continuous Integration

Maintain a Single Source Repository

● In general you should store in source control everything you need to build anything, but nothing that you actually build (artefact).

● One project one repo

5

Continuous Integration

Automate the Build

● Anyone should be able to bring in a virgin machine, check the sources out of the repository, issue a single command, and have a running system on their machine

6

Continuous Integration

Make Your Build Self-Testing

● A suite of automated tests that can check a large part of the code base for bugs. The tests need to be able to be kicked off from a simple command and to be self-checking.

7

Continuous Integration

Everyone Commits To the Mainline Every Day

● Prerequisite for a developer committing to the mainline is that they can correctly build their code.

● Frequent commits encourage developers to break down their work into small chunks of a few hours each.

8

Continuous Integration

Every Commit Should Build the Mainline on an Integration Machine

● Every time a commit against the repository finishes the server automatically checks out the sources onto the integration machine, initiates a build, and notifies the committer of the result of the build

9

Continuous Integration

Keep the Build Fast

● The whole point of Continuous Integration is to provide rapid feedback.● Made a stage of pipeline with a sequential suite of

unit,integration,acceptance test

10

Continuous Integration

Test in a Clone of the Production Environment

● As a result you want to set up your test environment to be as exact a mimic of your production environment as possible

11

Continuous Integration

Everyone can see what's happening

● One of the most important things to communicate is the state of the mainline build

12

Continuous Integration

Automate Deployment

● It's important to have scripts that will allow you to deploy the application into any environment easily.

13

Continuous Integration

key points

● Build on each computer● All test suite green before push● Integration test between project every push● High priority for CI red build

14

Continuous Integration

Build on each computer

15

Continuous Integration

High priority for red build

16

Continuous Integration

● Reduced risk during integration● It does make them dramatically easier to find and remove bug● Mindset● Methodology and not a tool

17

Continuous Integration

Onebip Scenario: Tools

● Version Control

● Build automation

● ContinuousIntegration

18

Continuous Integration

Build automation: Phing

<build><dist/><pre-remote-deploy/><remote-deploy/><post-remote-deploy-test/><post-remote-deploy/>

</build>

19

Continuous Integration

Pipeline

20

Continuous Integration

Pipeline

● 4 environments: CI, IT, UAT, PRODo CI: unit,acceptance and integration test in isolationo IT: db/app migration rollback, BDD between project, Cross browser

testo UAT: Manual customer approval testo PROD: Smoke test and KPI validation/monitoring test

● 9 pipeline for each heterogeneous projects ● Dependencies between environment and projects

21

Continuous Integration

Improvement

● Rake build language● All environment for Pipeline not 24h● Continuous Delivery

22

Continuous Integration

Thanks for listening

Linkshttp://martinfowler.com/articles/continuousIntegration.html

http://www.thoughtworks.com/continuous-delivery

ROMA | LONDON| MILANO | PARIS | MADRID | REUS | BERLIN | BEOGRAD | ISTANBUL | SAN FRANCISCOCIUDAD DE MÉXICO | SÃO PAULO | BOGOTÁ | MUMBAI

Neomobile - Corporate HeadquartersViale Pasteur 78, 00144 Roma – Italy | Tel. +39 0698262553

info@neomobile.com