During the first FixFusion in May 2014 we have released one of our Internal systems - a TEONITE Deployment tool for deployment, provisioning and database migration to the OpenSource world. Many great products come from solving your own problem. The same happened with this project. We welcome the fact that the first pull requests appeared soon after FixFusion!
We pushed Fabric to the next level!
We have tried various deployment tools and since Python is our main choice when it comes to programing language we mostly used Fabric. But as always, we wanted more out of that and decided to build our own solution that meets expectations of our developers and fits the way we work.
So we we pushed Fabric to the next level by using it handle operations on the remote server but we added functionalities that automate the whole deployment process for us:
- full control of every step - process preparation, files selection (copy, remove, keep), unpacking
- setting procedures to be triggered before, during and after deployment
- predefined deployment model for all projects and a dedicated configuration per project
- check if necessary virtualenv exists and required packages are installed
- restart processes using Supervisor
- mail notification after deployment
Our first Open Source release
As we use TEONITE Development in almost all of our projects and were super-excited to contribute it to the Open Source community as many areas of our business is based on the open code. Deployment is our first step in this direction and we hope that next FixFusion events will allow developers worldwide to benefit from using other projects we have developed so far.
Typical deployment flow
| |-current -> 20130412_181014
| |-previous -> 20130411_213213
- Test remote server & check if connection to remote server is possible.
- Execute pre-deploy commands
- Get sources & if local git repository is found, it will be pulled, else will be cloned.
- Archive sources
- Upload sources to remote server
- Extract source to target subfolder
- Switch current/previous links
- Copy config files
- Run post-deploy commands