Skip to content

Commit 770342d

Browse files
committed
Merge branch 'travis'
2 parents 967d4f1 + ea150c4 commit 770342d

File tree

3 files changed

+237
-2
lines changed

3 files changed

+237
-2
lines changed
Lines changed: 231 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,231 @@
1+
---
2+
layout: post
3+
title: Travis CI l'intégration continue sans effort
4+
author: loicfrering
5+
tags: [ci, travis, php, nodejs, ruby, clojure, erlang]
6+
published: true
7+
---
8+
9+
Aujourd'hui je souhaite vous parler d'un projet qui me tient
10+
particulièrement à cœur : [Travis CI](http://travis-ci.org/), une
11+
plateforme d'intégration continue simple et efficace. C'est un projet
12+
auquel je tiens puisque j'y contribue et gère le support de PHP avec
13+
l'aide et aux côtés de l'[équipe de
14+
contributeurs](https://github.com/travis-ci/).
15+
16+
<p class="center">
17+
<img src="/public/img/2012-01-25-travis-ci/travis.png" border="0" />
18+
</p>
19+
20+
Sa devise ? "A distributed build system for the open source community."
21+
A l'initiative de la communauté Ruby, Travis est donc une plateforme
22+
d'intégration continue ouverte et distribuée mise à disposition sous
23+
forme de service. Ouverte car tout projet public publié sur Github peut
24+
mettre en place son intégration continue sur Travis. Et distribuée car
25+
Travis s'occupe de distribuer les builds de vos projets sur des workers
26+
dont nous détaillerons le fonctionnement plus loin.
27+
28+
## Face aux autres plateformes d'intégration continue
29+
30+
Et donc quels avantages face aux Jenkins/Hudson, CruiseControl et autres
31+
? En quoi Travis CI se démarque-t-il de la concurrence ?
32+
33+
Tout d'abord, Travis se présente en mode **service**, aucune
34+
installation nécessaire, pas d'infrastructure à mettre en place !
35+
Travis héberge **gratuitement** l'intégration continue des projets open
36+
source et sa **mise en place est très facile** comme nous le verrons un
37+
peu plus loin.
38+
39+
Chaque build de votre projet s'exécute dans une **machine virtuelle
40+
dédiée** : vous disposez d'un environnement complet pour votre build,
41+
vous pouvez installer ce que vous voulez sur cet environnement et cela
42+
n'affectera pas les autres projets buildés par Travis de la même manière
43+
que les autres projets ne viendront pas perturber le votre.
44+
45+
De plus chaque build se déroule dans une **sandbox** : après l'exécution
46+
du build, une snapshot réinitialisée de la machine virtuelle restaure
47+
son état, aucun risque de casser votre environnement.
48+
49+
Enfin, l'**infrastructure est distribuée**, tout d'abord le front est totalement
50+
découplé des workers puis Travis provisionne pour vous un pool de
51+
workers capable de dépiler le flot de build de tous les projets gérés
52+
par Travis. Les charges du front et de chacun des workers sont
53+
indépendantes.
54+
55+
Travis supporte actuellement les langages suivants :
56+
57+
* Clojure
58+
* Erlang
59+
* JavaScript avec Node.js
60+
* PHP
61+
* Ruby
62+
63+
Une des forces de Travis est de permettre de **tester vos applications
64+
sur plusieurs versions du langage** que vous utilisez. Vous faites du
65+
Ruby ? Vous pouvez tester votre projet sur Ruby 1.8.7, Ruby 1.9.3 ou
66+
même Ruby HEAD (version de développement courante), JRuby ou Rubinius.
67+
Vous faites du nodejs, hop testez vos packages sur nodejs 0.4 ou 0.6.
68+
Vous faites du PHP, vous pouvez tester votre projet sur PHP 5.3.9,
69+
5.4.0RC5 et même 5.2.17 !
70+
71+
Votre application doit être testée sur plusieurs bases de données
72+
différentes ? Travis supporte MySQL, PostGreSQL, SQLite, MongoDB,
73+
CouchDB, Riak et Redis. En combinant les versions du langage testées et
74+
les différents envronnements à votre disposition, vous obtenez une
75+
**build matrix** garantissant que vos tests passent sur l'ensemble de
76+
ces combinaisons !
77+
78+
Ainsi il est possible de tester vos projets sur des dizaines de
79+
combinaisons de version de langage et de configuration d'environnement
80+
différentes. Voyez par exemple comment [Sinatra joue ses tests sur près
81+
de 30 combinaisons
82+
différentes](http://travis-ci.org/#!/sinatra/sinatra). De la même
83+
manière, [FOSUserBundle garanti son bon
84+
fonctionnement](http://travis-ci.org/#!/FriendsOfSymfony/FOSUserBundle)
85+
non seulement sur PHP 5.3 et 5.4 mais aussi sur 3 versions différentes
86+
de Symfony2 ! Tout ceci grace à Travis qui permet d'améliorer de façon
87+
significative la robustesse et la fiabilité de nombreux projets open
88+
source ! Il est aussi fréquent de découvrir des bugs sur les différentes
89+
versions en cours de développements des langages supportés par Travis.
90+
91+
## Contraintes
92+
93+
Bien entendu Travis vient aussi avec quelques contraintes qu'il faudra
94+
mesurer en fonction de ce que vous attendez de votre intégration
95+
continue.
96+
97+
Tout d'abord, Travis est pour l'instant fortement couplé à Git et
98+
Github, il est nécessaire que votre projet soit public sur Github pour
99+
profiter de Travis. Cependant le support d'autres repositories Git et
100+
des repositories privés est dans le pipe.
101+
102+
Pour l'instant et même si toutes les briques de Travis sont open source,
103+
il n'est pas aisé d'installer un environnement Travis privé et dédié.
104+
105+
Travis a tout d'abord été conçu pour la communauté open source.
106+
107+
## Mise en place
108+
109+
Vous avez un projet sur Github ? La première étape pour mettre en place
110+
son itégration continue sur Travis est d'y placer à la racine un fichier
111+
[.travis.yml](http://about.travis-ci.org/docs/user/getting-started/#step-three-add-travisyml-file-to-your-repository)
112+
décrivant comment doit se dérouler votre build. La configuration de
113+
Travis est très souple et permet la définition des fameuses combinaisons
114+
mentionnées un peu plus tôt.
115+
116+
Pour la seconde étape il suffit de vous rendre sur
117+
[travis-ci.org](http://travis-ci.org), de vous authentifier
118+
automatiquement via l'OAuth de Github et vous pourrez activer
119+
l'intégration continue de vos projets, c'est aussi simple que cela !
120+
121+
Pour plus d'informations, référez-vous au [Getting
122+
Started](http://about.travis-ci.org/docs/user/getting-started/) de la
123+
documentation. N'hésitez pas à suivre les sections spécifiques à votre
124+
langage de prédilection.
125+
126+
## Technologies
127+
128+
Travis est principalement écrit en Ruby et repose sur un ensemble de
129+
technologies modernes et innovantes qui lui donnent les caractéristiques
130+
détaillées plus haut :
131+
132+
* [AMQP](http://bit.ly/amqp-model-explained) avec
133+
[RabbitMQ](http://www.rabbitmq.com/) pour le messaging et la
134+
distribution des builds. Plusieurs clients sont utilisés en
135+
particulier Hot Bunnies, projet dans lequel l'un des core contributor de
136+
Travis est fortement impliqué. Il s'agit d'un client JRuby construit sur
137+
la base du client Java pour RabbitMQ maintenu par SpringSource, une
138+
preuve de la pertinence de la cohabitation JVM/JRuby.
139+
* [JRuby](http://jruby.org/) pour profiter de certaines librairies Java
140+
et des performances
141+
* [Vagrant](http://vagrantup.com/) pour la gestion des machines virtuelles
142+
* [Chef](http://wiki.opscode.com/display/chef/Home) pour le
143+
provisionning des machines virtuelles
144+
* [WebSockets](http://en.wikipedia.org/wiki/WebSocket) par
145+
l'intermédiaire de [Pusher](http://pusher.com/) pour la mise à jour
146+
des logs de build en temps réel
147+
* [Rails](http://rubyonrails.org/) pour le front côté serveur
148+
* [Ember.js](http://emberjs.com/) (successeur de SproutCore 2) pour la
149+
RIA côté client
150+
151+
Son architecture étant découplée, une partie des applications qui
152+
composent Travis sont déployées sur [Heroku](http://www.heroku.com/) (le
153+
site web, le hub) alors que les workers, qui exécutent les builds,
154+
tournent sur des machines dédiées fournies généreusement par des
155+
sponsors.
156+
157+
Pour plus de détails sur les rouages de Travis, vous pouvez vous référez
158+
à cette [technical
159+
overview](http://about.travis-ci.org/docs/dev/overview/).
160+
161+
## A ce jour
162+
163+
A ce jour, Travis lance les builds de plus de 4200 repositories à raison
164+
de 2000 builds par jour en moyenne ! L'intégration continue de projets
165+
très prestigieux est gérée par Travis, en particulier :
166+
167+
* Dans la communauté Ruby :
168+
* [Ruby on Rails](http://travis-ci.org/#!/rails/rails)
169+
* [Bundler](http://travis-ci.org/#!/carlhuda/bundler)
170+
* [Sinatra](http://travis-ci.org/sinatra/sinatra)
171+
* [Rack](http://travis-ci.org/#!/rack/rack)
172+
* [RSpec](http://travis-ci.org/#!/rspec/rspec-core)
173+
* [Cucumber](http://travis-ci.org/#!/cucumber/cucumber)
174+
* [HAML](http://travis-ci.org/#!/nex3/haml)
175+
* [SASS](http://travis-ci.org/#!/nex3/sass)
176+
* [RubyGems](http://travis-ci.org/#!/rubygems/rubygems)
177+
* [rubygems.org](http://travis-ci.org/#!/rubygems/rubygems.org)
178+
* [Mongoid](http://travis-ci.org/#!/mongoid/mongoid)
179+
* [Rubinius](http://travis-ci.org/#!/rubinius/rubinius)
180+
* [Factory Girl](http://travis-ci.org/#!/thoughtbot/factory_girl)
181+
* [Spree](http://travis-ci.org/#!/spree/spree)
182+
* [Devise](http://travis-ci.org/#!/plataformatec/devise)
183+
* [amqp gem](http://travis-ci.org/#!/ruby-amqp/amqp)
184+
* et même le miroir GitHub de [CRuby (MRI) itself](http://travis-ci.org/#!/ruby/ruby)
185+
* Dans la communauté JavaScript :
186+
* [Node.js](http://travis-ci.org/joyent/node)
187+
* [NPM](http://travis-ci.org/#!/isaacs/npm)
188+
* [Express](http://travis-ci.org/#!/visionmedia/express)
189+
* [Vows](http://travis-ci.org/#!/cloudhead/vows)
190+
* [Mocha](http://travis-ci.org/#!/visionmedia/mocha)
191+
* [Ember.js](http://travis-ci.org/#!/emberjs/ember.js) (ex. SproutCore 2)
192+
* [Batman.js](http://travis-ci.org/#!/Shopify/batman)
193+
* [flatiron (certains sous-projets)](https://github.com/flatiron)
194+
* Dans la communauté PHP :
195+
* [Symfony2](http://travis-ci.org/#!/symfony/symfony)
196+
* [Doctrine2](http://travis-ci.org/#!/doctrine/doctrine2)
197+
* [Composer](http://travis-ci.org/#!/composer/composer)
198+
* [Behat](http://travis-ci.org/#!/Behat/Behat)
199+
* et de nombreux bundles Symfony2
200+
* Dans la communauté Clojure :
201+
* [Leiningen](http://travis-ci.org/#!/technomancy/leiningen)
202+
* [Knockbox](http://travis-ci.org/#!/reiddraper/knockbox)
203+
* [Langohr](http://travis-ci.org/#!/michaelklishin/langohr)
204+
* [Monger](http://travis-ci.org/#!/michaelklishin/monger)
205+
* [Neocons](http://travis-ci.org/#!/michaelklishin/neocons)
206+
* [Sumo](http://travis-ci.org/#!/reiddraper/sumo)
207+
* Dans la communauté Erlang :
208+
* [Cowboy](http://travis-ci.org/#!/extend/cowboy)
209+
* [Elixir](http://travis-ci.org/#!/josevalim/elixir)
210+
* On y trouve même quelques plugins Eclipse qui profitent de la
211+
disponibilité de Maven sur la plateforme :
212+
* [Symfony2 Eclipse Plugin](http://travis-ci.org/#!/pulse00/Symfony-2-Eclipse-Plugin)
213+
* [Twig Eclipse Plugin](http://travis-ci.org/#!/pulse00/Twig-Eclipse-Plugin)
214+
215+
## Conclusion
216+
217+
Nous avons vu ici ce qu'est Travis CI et comment il se positionne
218+
vis-à-vis des autres systèmes d'intégration continue. Vous avez un
219+
projet open source sur Github ? Le langage est supporté par Travis ?
220+
Alors allez vite installer son intégration continue sur Travis si ce
221+
n'est pas déjà fait !
222+
223+
Pour plus d'informations, n'hésitez pas à parcourir la
224+
[documentation](http://about.travis-ci.org/docs/), à suivre
225+
[@Travis](https://twitter.com/travisci) sur Twitter ou à nous rejoindre
226+
sur le channel #travis de irc.freenode.net.
227+
228+
Merci à [Michael Klishin](https://twitter.com/michaelklishin) pour la
229+
relecture approfondie et à tous les [contributeurs
230+
Travis](https://github.com/travis-ci/) qui participent à la mise à
231+
disposition de cet outil si pratique !

public/css/style.css

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,10 @@ ul {
215215
list-style-type: square;
216216
}
217217

218+
.center {
219+
text-align: center;
220+
}
221+
218222
/* ---- Site header ---- */
219223

220224
#container > header {
@@ -300,9 +304,9 @@ ul {
300304
border-bottom-color: #480c28;
301305
}
302306

303-
#content img {
307+
/*#content img {
304308
border: solid 3px #999;
305-
}
309+
}*/
306310

307311
/* ---- Article ---- */
308312

6.03 KB
Loading

0 commit comments

Comments
 (0)