Olivia5k / piper

Build system that builds and very little more
http://thiderman.org/piper/
MIT License
5 stars 0 forks source link

===== Piper

piper is a build agent that you can run locally!

Rationale

"Whatever you do, don't ever build a new build system. That would be the worst possible thing to do." - one of my managers, not realizing that telling a hacker what they cannot do is the most inspiring thing that exists.

Build systems are a pervasive problem. Every single one of them has its pros and cons and are both terrible and great in their own special way. Piper tries to solve this problem in its own way, by focussing on providing a tool that will allow you to easily reproduce builds locally and power a decentralised build infrastructure.

How it works

piper does two things:

Features

This list of features is what we're working towards. A lot of them are already in place.

What it is built on

Piper stands on the shoulders of other open source giants:

This whole project is written in Python 3.4, it is not compatible with older versions of Python 3 or Python 2. We rely on new features in Python 3.4 including but not limited to asyncio_.

RethinkDB is the database of our choosing to store all kinds of information. It scales well and has a very nice query language. Since we just end up passing JSON around it fits our needs really well.

Elasticsearch_ is optional but can be used for build log storage. By default logs are shipped off to RethinkDB instead but especially for bigger sites storing and indexing that data into Elasticsearch can provide much more insight into what's happening across your builds.

What piper does not do

A lot of build systems end up becoming more and more complex because they want to solve every single problem from build to deploy and everything in between for you.

With Piper we chose to focus on being good at one thing, building your software, and integrates with other tools to do the rest:

.. _Python: https://www.python.org .. _RethinkDB: http://rethinkdb.com .. _JSON: http://www.json.org .. _Elasticsearch: https://www.elastic.co/products/elasticsearch .. _asyncio: https://docs.python.org/3.4/library/asyncio.html