I’ve am working on multiple projects in my free time and I’d like to take the time to write about them, one by one. The basic idea is to describe the project briefly: what it does, why I started working on it, and what my plans are for the future.
Today I’d like to talk about revisioneer
Revisioneer is an API which tracks application deployments per server. Every time you deploy your application via ansible or mina you can send the current SHA including the changeset to revisioneer, and later use that information in whatever way you like.
One should be able to easily integrate revisioneer with other deployment tools like capistrano, or other provisioning solutions like chef or puppet. It’s just a single cURL call away.
For example one can use the information later to determine deployment frequencies, generate changesets, or visualize the information nicely.
I started working on revisioneer because I wanted to have these informations available for the W:O:A Festival Manager, a network of multiple Ruby on Rails applications I’m freelancing on. There are multiple SaaS on the internet that also enable this kind of deployment tracking but I neither want to pay for it nor do I want to use the baggage which comes with them. Instead I opted for a small API which only does one thing, and which can easily be integrated into different systems.
The API is really small and consists of only four endpoints: one for creating new projects, one for creating a new deployment, one for verifying the deployment, and one to retrieve the deployments.
The project is build with host-it-yourself in mind, which is why there is a provisioning repository available which automates the entire server setup.
The most important points I’d like to address in future versions are:
-
webhook based deployment notifications. The goal is to notify 3rd party systems of new versions to achive any kind of side effects.
-
store more server related informations per deployment. E.g. if you scale horizontally one might want to know which deployment happened at what server exactly
-
polish the API a litte more. E.g. add request throttling and support for read-only sessions, multiple authentication tokens, …
That’s about revisioneer. Check out the project on github, it’s written in go, the SQL schema is managed with sqitch and the provisioning is 100% ansible.
If you’d like to learn more about any of those, the project is tiny and might thus be a good starting point.
Up next: traq, and umsatz after that.