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
23
Embed
Continuous integration CloudParty 21 may 2014 - Milan
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.
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
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.
● 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