Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Newer
Older
100644 56 lines (38 sloc) 4.21 kB
24da1ef @jamesbennet Updated REAME
jamesbennet authored
1 pyBit (πβ or πβιϑ) itself is what it says on the tin, the Python Build Integration Toolkit.
2
c3fc8f6 @jamesbennet Updated README to not mention things which are now untrue, and clarif…
jamesbennet authored
3 The aim was to create a distributed AMQP based build system system using python and RabbitMQ. We talk to the queue using python-amqplib, with messages being encoded using python-jsonpickle. python-bottle is used to provide a lightweight HTTP based API, which the associated (static) web GUI can query using the jQuery javascript library.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
4
5 Design
6 The system consists of two parts, a single server, and one to many clients. pybit-web is the server part, and pybit-client the client part. You will also need a PostgreSQL database, which we speak to using python-psycopg2.
7
c3fc8f6 @jamesbennet Updated README to not mention things which are now untrue, and clarif…
jamesbennet authored
8 The front-end (Static HTML) web GUI queries the back-end (python) HTTP API using the jQuery Javascript library. The [HTML side] of the web GUI is not coupled otherwise to the system, as it does not speak to the queue or database directly.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
9
3b805f0 @jamesbennet Updated README
jamesbennet authored
10 Likewise, the client only speaks to the controller using the queue, and the HTTP API, never the database. By loosely coupling components, we aim to make it easy to extend the system to support a variety of different configurations and scenarios.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
11
ed285af @jamesbennet Deleted local bottle.py, updated control file to pull in python-bottl…
jamesbennet authored
12 We aim to be flexible enough to build any combination of package type (i.e. DEB, RPM) for any arch, for any system (even, say .MSI installers for MS Windows). Currently however, we are mostly concerned with building ARM and i386 packages targeting Debian GNU/Linux 'Wheezy', and above.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
13
14 Data Exchange
15 We use a well known interchange format (JSON, with the JSONPickle library). We will present a RESTful HTTP based API. i.e. using the GET verb on http://[server]/job shall return a list of all running build jobs, while http://[server]/job/1 shall return the specific job instance with the ID 1.
16
17 Note that we proxy POST and PUT, and map /[object]/[id]/delete to DELETE. This is as HTML forms, in most browsers can only do GET and POST (JQuery can do more using its AJAX functions).
18
19 Requirements
ed285af @jamesbennet Deleted local bottle.py, updated control file to pull in python-bottl…
jamesbennet authored
20 Note that bottle.py gained a new route rule syntax, amongst other things, in Bottle 0.10x. However, Debian Squeeze has python-bottle 0.8x in the repository. Therefore, we no longer support Squeeze. This can be worked around by overriding with a copy of bottle from upstream. Drop us a message, if you really want Squeeze support.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
21
22 python-requests is available from squeeze-backports, as is python-psycopg2. Do NOT use the version of psycopg2 from squeeze/main, if you intend to use a multi-threaded web server, this is unsupported.
23
24 Installation
90b759c @codehelp update for changes to Debian packaging arrangements
codehelp authored
25 In /db, there are scripts to create and populate the database manually. However, when installing on Debian or a Debian derivative, we reccomend you use dbconfig-common and debconf, during the package installation process. See the Debian packaging at https://github.com/codehelp/pybit-debian for more information.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
26
27 Running the software
c3fc8f6 @jamesbennet Updated README to not mention things which are now untrue, and clarif…
jamesbennet authored
28 The connection string, hostname, etc.... are stored in /etc/pybit/configs/*. These should be set during the package installation process, but you may edit and configure these as you wish. Then simply start the server first, then the client(s) second. The client will pick up any suitable queued jobs when it comes up.
24da1ef @jamesbennet Updated REAME
jamesbennet authored
29
30 For support:
b92d9bf @jamesbennet Fixed typo in IRC url
jamesbennet authored
31 IRC - #pybit on irc.oftc.net irc://irc.oftc.net/pybit (Or use github issues)
43e5de8 @codehelp add back the README
codehelp authored
32
33 Packaging requirements
34
24da1ef @jamesbennet Updated REAME
jamesbennet authored
35 * rabbitmq-server http://packages.qa.debian.org/r/rabbitmq-server.html
36 o http://www.rabbitmq.com/
37 * python-amqplib http://packages.qa.debian.org/p/python-amqplib.html
38 o http://code.google.com/p/py-amqplib/
39 * python-debian http://packages.qa.debian.org/p/python-debian.html
40 * python-jsonpickle http://packages.qa.debian.org/j/jsonpickle.html
41 * python-bottle http://packages.qa.debian.org/p/python-bottle.html
42 o http://bottlepy.org/
43 * python-psycopg2 http://packages.qa.debian.org/p/psycopg2.html
44 * python-requests http://packages.qa.debian.org/p/python-requests.html
90b759c @codehelp update for changes to Debian packaging arrangements
codehelp authored
45
46 Debian packaging is now on https://github.com/codehelp/pybit-debian
47
43e5de8 @codehelp add back the README
codehelp authored
48 Useful links:
24da1ef @jamesbennet Updated REAME
jamesbennet authored
49
50 * http://www.rabbitmq.com/tutorials/tutorial-one-python.html - A RabbitMQ tutorial using Python.
51 * http://jsonpickle.github.com/
52 * http://initd.org/psycopg/
53 * http://www.rabbitmq.com/
54 * http://bottlepy.org/docs/stable/index.html
55 * http://docs.python-requests.org/en/latest/
Something went wrong with that request. Please try again.