Upload
simone-pasquini
View
236
Download
3
Tags:
Embed Size (px)
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