659f44060c1fb8bb2dacef163be6a8e882eb457a
[python-guide.git] / docs / scenarios / ci.rst
1 Continuous Integration
2 ======================
3
4
5 Why?
6 ----
7
8 Martin Fowler, who first wrote about `Continuous Integration <http://martinfowler.com/articles/continuousIntegration.html>`_
9 (short: CI) together with Kent Beck, describes the CI as follows:
10
11     Continuous Integration is a software development practice where members of
12     a team integrate their work frequently, usually each person integrates at
13     least daily - leading to multiple integrations per day. Each integration is
14     verified by an automated build (including test) to detect integration errors
15     as quickly as possible. Many teams find that this approach leads to
16     significantly reduced integration problems and allows a team to develop
17     cohesive software more rapidly.
18
19 Jenkins
20 -------
21
22 `Jenkins CI <http://jenkins-ci.org>`_ is an extensible continuous integration
23 engine. Use it.
24
25
26
27 Buildbot
28 --------
29 `Buildbot <http://buildbot.net/buildbot/docs/current>`_ is a Python system to
30 automate the compile/test cycle to validate code changes.
31
32
33 Mule?
34 -----
35
36 .. todo:: Write about Mule
37
38 Tox
39 ---
40
41 `tox <https://bitbucket.org/hpk42/tox>`_ is an automation tool providing
42 packaging, testing and deployment of Python software right from the console or
43 CI server. It is a generic virtualenv management and test command line tool
44 which provides the following features:
45
46 * Checking that packages install correctly with different Python versions and
47   interpreters
48 * Running tests in each of the environments, configuring your test tool of
49   choice
50 * Acting as a frontend to Continuous Integration servers, reducing boilerplate
51   and merging CI and shell-based testing.
52
53
54 Travis-CI
55 ---------
56
57 .. todo:: Write about travis-ci