Difference between revisions of "SoC geeklog2 continuous builds"
m (Added link to another Continious Integration tool) |
(→Further Reading) |
||
Line 42: | Line 42: | ||
* [http://buildman.limb-project.com/ Buildman] | * [http://buildman.limb-project.com/ Buildman] | ||
* [http://en.wikipedia.org/wiki/Continuous_integration Continious Integration] | * [http://en.wikipedia.org/wiki/Continuous_integration Continious Integration] | ||
+ | * [http://nohn.net/blog/view/id/cruisecontrol_ant_and_phpunit Continuous Builds with CruiseControl, Ant and PHPUnit] | ||
[[Category:Summer of Code]] [[Category:Development]] | [[Category:Summer of Code]] [[Category:Development]] |
Revision as of 17:27, 24 March 2008
Incentive
Geeklog 2 is a sophisticated system. A balance between rich features and ease of use must be struck which places a high emphasis on quality. A big part of establishing quality is to implement testing as a core part of the project. Additionally, there are key parts to the Geeklog 2 that require special processing such as building the models (the "M" part of MVC). Geeklog 2 makes heavy use of Propel, an object relational mapper, to limit the amount of SQL a developer has to write and enhancements to Propel make it possible to isolate all SQL from the rest of the system.
Because of these and a number of other complexities having a system in place that polls SVN for changes, checks out the code, runs unit tests and produces builds (i.e. PEAR-installable packages) would take some of the time and complexity with getting a new version out and it forces testing to be an integral part of the system.
Objective
- Research Open Source build tools such as Phing, Xinc and Cruise Control to provide continuous builds
- Establish the actual build process including
- Checking out code from SVN
- Running Unit tests
- Running regression tests
- Upon test failures notification of the development team
- Upon successful testing tagging the code and doing full builds
Goals
- Define the requirements we have of a build tool
- Systematically compare products available
- Define our exact build process
- Pick the best tool
- Implement it against the process we defined
Level of Difficulty
Hard
Continuous builds in PHP is a relatively new concept. A good candidate must be willing to push forward and trudge new ground in a developing area within the PHP community.