Difference between revisions of "SoC geeklog2 continuous builds"
(Added project goals + some links to buil systems) |
|||
Line 17: | Line 17: | ||
** Upon test failures notification of the development team | ** Upon test failures notification of the development team | ||
** Upon successful testing tagging the code and doing full builds | ** 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 == | == Level of Difficulty == | ||
Line 28: | Line 37: | ||
* [http://phing.info/ Phing] | * [http://phing.info/ Phing] | ||
* [http://code.google.com/p/xinc/ Xinc] | * [http://code.google.com/p/xinc/ Xinc] | ||
− | * [http://http:// | + | * [http://cruisecontrol.sourceforge.net/ CruiseControl] |
+ | * [http://buildbot.net/ BuildBot] | ||
+ | * [http://continuum.apache.org/ Continuum] | ||
+ | |||
[[Category:Summer of Code]] [[Category:Development]] | [[Category:Summer of Code]] [[Category:Development]] |
Revision as of 13:36, 19 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.