Skip to content

Commit 8669820

Browse files
committed
Init Travis CI post.
1 parent a8c7c2d commit 8669820

File tree

1 file changed

+187
-0
lines changed

1 file changed

+187
-0
lines changed
Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
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: false
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/) que je remercie au passage
15+
et qui mettent à disposition de la communauté open source cet outil plus
16+
que pratique !
17+
18+
![Travis CI](images/travis.png)
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 propre de la machine virtuelle restaure son état,
47+
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.8,
69+
5.4.0RC4 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 travis-ci.org, de
117+
vous authentifier automatiquement via l'OAuth de Github et vous pourrez
118+
activer l'intégration continue de vos projets, c'est aussi simple que
119+
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+
## A ce jour
152+
153+
A ce jour, Travis lance les builds de plus de 4200 repositories à raison
154+
de 2000 builds par jour en moyenne ! L'intégration continue de projets
155+
très prestigieux est gérée par Travis, en particulier :
156+
157+
* Rails, Sinatra
158+
* HAML, SASS, LESS et leurs plugins Rails respectifs
159+
* RSpec
160+
* Mongoid
161+
* NodeJS et npm
162+
* Cucumber
163+
* Gollum
164+
* Bundler
165+
* rubygems et rubygems.org
166+
* Ruby itself (CRuby, l'implémentation de référence)
167+
* Symfony2 et une bonne partie des bundles les plus connus
168+
* Doctrine2
169+
* Propel
170+
* Behat
171+
* Le plugin Eclipse pour Twig
172+
* Leiningen
173+
174+
J'en passe et des meilleurs !
175+
176+
## Conclusion
177+
178+
Nous avons vu ici ce qu'est Travis CI et comment il se positionne
179+
vis-à-vis des autres systèmes d'intégration continue. Vous avez un
180+
projet open source sur Github ? Le langage est supporté par Travis ?
181+
Alors allez vite installer son intégration continue sur Travis si ce
182+
n'est pas déjà fait !
183+
184+
Pour plus d'informations, n'hésitez pas à parcourir la
185+
[documentation](http://about.travis-ci.org/docs/), à suivre
186+
[@Travis](https://twitter.com/travisci) sur Twitter ou à nous rejoindre
187+
sur le channel #travis de irc.freenode.net.

0 commit comments

Comments
 (0)