Deployment system

In the company I’m working in,, 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.