Release engineering
General[edit | edit source]
wp:Release engineering is the discipline of releasing a software product or service to an audience. It is the liason between product managers, developers, testers, system administrators, consumers and/or users, legal, marketing, customer service and other constituents.
Releases[edit | edit source]
The workflow for releasingl code and data from development (possibly done on a local desktop) through test, staging and on to production is both a tedious and critical process. The automation that makes this process successful is the domain of release engineering.
The 'best practices' described at http://drupal.org/creating-drupal-test-sites do not adequately address the issue (it doesn't even talk about using version control, and the database dump and copy is overly simplistic because it assumes that you can take your site offline for the entire duration of your development cycle).
We need to be sure to account for the three aspects of the system:
- files (aka "assets")
- database
- code
and have the release process coordinated with our version control system and testing procedures in a way that we can isolate and review the 'delta' (what is going in). Part of the install plan includes the exact steps for reversing the install. (Something failed testing, undo it.)
Basically, the process looks like this:
- develop
- test
- commit
- produce install plan (code changes and database changes)
- produce test plan (assertions to know that the changes work)
- take site offline
- install code and data
- test production
- revert or send release note
See Also[edit | edit source]
- Build Automation
- http://en.wikipedia.org/wiki/List_of_build_automation_software
- Deployment tools
- Capistrano (Ruby),
- Ant (Java),
- Maven (Java)
- Phing (PHP) http://phing.info/trac/ based on Ant, used in multiple frameworks like Zend Framework and Symfony
- Pake (PHP) http://www.pake-project.com/ "make" clone for PHP. Origin in the Symfony project, and can be used alone.
- PEAR (PHP) http://pear.php.net Don't forget that PEAR packager is a build, configuration and distribution tool. http://pear.php.net/package/PEAR http://pear.php.net/manual/en/core.ppm.php
http://morethanseven.net/2008/01/07/how-to-deploy-php-sites-with-the-pake-build-tool/