Which automated deployment tool?

According to Wikipedia,

“Build automation is the act of scripting or automating a wide variety of tasks that software developers do in their day-to-day activities…”

And their benefits again according to Wikipedia:

“The advantages of build automation to software development projects include:

  • Improve product quality
  • Accelerate the compile and link processing
  • Eliminate redundant tasks
  • Minimize "bad builds”
  • Eliminate dependencies on key personnel
  • Have history of builds and releases in order to investigate issues
  • Save time and money - because of the reasons listed above.“

In addition to automating the deployment process these tools can for handling and also automating systems administration tasks.

Additional benefits include:

  • reduction of technical debt
  • onboarding new team members
  • unifies/connects additional tools

There are many great tools available. Many are well known and used for the community that uses the language that they are built in.

Capistrano is well known in the Ruby community, but is also made in Ruby.

Fabric is common in the Python community.

Ant and Maven are well known in the enterprise Java world, but not in PHP.

However, there is a PHP solution that is based on Ant. It is Phing and according to its website at http://www.phing.info:

"it’s a PHP project build system or build tool based on ​Apache Ant. You can do anything with it that you could do with a traditional build system like GNU make, and its use of simple XML build files and extensible PHP "task” classes make it an easy-to-use and highly flexible build framework.“

Now that sounds what we are looking for so let’s continue to read their website:

"If you find yourself writing custom scripts to handle the packaging, deploying, or testing of your applications, then we suggest looking at the Phing. Phing comes packaged with numerous out-of-the-box operation modules (tasks), and an easy-to-use OO model to extend or add your own custom tasks.

Phing provides the following features:

  • Simple XML buildfiles
  • Rich set of provided tasks
  • Easily extendable via PHP classes
  • Platform-independent: works on UNIX, Windows, Mac OSX
  • No required external dependencies
  • Built for PHP5”

Note that in addition to deployment, it allows us to easily extend it using PHP5 object oriented programming to handle the system administration tasks.

It also includes a framework to include tasks for testing which is the next set of tasks that I want to automate after getting a handle on web application deployments.

As the Phing lead quoted in one of the his Phing decks on Slideshare: “An excellent developer makes himself needless.” Wish more people shared that philosophy.

So we now have a clear winner.
Phing.