In the company I’m working in, youwin.com, and in the first days, I introduced the idea of installing our own deployment system (until then, the deployment was kind of a manual procedure, not always successful).
After lot of search, I ended up to Magallanes. A very nice and complete deployment system based on php. A lot of study was done back then, which ended up on building a number of addons extending the command line as below:
- Option to build staging previews of the site, based on specific git branches (each preview was creating its own staging branch, as a result of merging the requested branches, and after the deployment, cleaning the branch accordingly)
- Merging branches and building the final version (merge and update with master)
- Server management (restart web, cache, database services, restart servers)
- Single magallanes installation was managing 8 different physical servers (3 web servers, 2 cache servers and 3 database servers)
The most important thing that was introduced though with this system, was a proper deployment procedure.
Not any more, each one to be able to deploy whatever and whenever. No one could deploy before testing in staging. And everything was controlled by a single person who was responsible for the deployment process (aka myself and one more as a replacement, in case I wasn’t available).
And this was something that everyone in the company respected and followed. Because all the sudden, teh dev department had consistency.
And it worked.