Symfony Continuous Integration

Continuous Integration. It is something that a lot of companies don't actively work on. It is very useful though. I am currently working on bringing CI to symfony in the form of phpUnderControl. This message is a short status update for those who already knew I was working on this.

A few evenings of work after starting on this project, I've got a working proof of concept since tonight. This working proof of concept means that I have phpUnderControl execute my tests, read in the resulting XML and display the test information in the phpUnderControl web interface as it would with phpUnit tests.

Structure

So how does this currently work. For this proof of concept, I've borrowed big pieces of code from the test:all task. I created a new task (test:undercontrol) which basically takes the output of test:all and analysis it for all required information. Based on this information, it builds an XML string that is then written to a path that is given as task parameter.

In your phpUnderControl, you create a new project as you always would. Instead of running phpUnit to test your code, you configure the build.xml to run

symfony test:undercontrol /path/to/cruisecontrol/projects/symfony/build/logs/phpunit.xml

Once phpUnderControl is triggered to build the project, it now gets all information it needs to display the test information in the web interface.

Not done though

This is just a proof of concept. With my work so far, I've proven that I can get symfony to spit out the required XML format so that phpUnderControl can parse and display this information. But this does not mean I'm done.

The test:all output is a summary of the actual test output, and as such does not contain all information that the XML needs. Right now, I added dummy information for those parts that I could not parse from the information I was getting. This will need to be rewritten so I can get more information from the tests and ensure that I get as much as possible the information required. And overall, the code needs a cleanup before I make it available to the general public.

Plugin

Once I do get this all cleaned up, I will be able to easily share it as a symfony plugin. This plugin, which currently goes by the working title of 'symfonyUnderControlPlugin', will contain the earlier mentioned test:undercontrol task, which is enough to get this working. Right now, I'm working on getting it to work with symfony 1.1, but with the imminent release of symfony 1.2, I will probably also start working on a symfony 1.2 version quickly after the 1.1 version is released. Backporting to 1.0 is also on my list, but with a lower priority.

Interested?

Interested in this plugin? I have so far been reporting my progress to the symfony-devs mailinglist, and will continue to do so. That mailinglist is quite interesting anyway, so if you do anything with symfony, join it anyway :)


Add comment

Comments

gravatar kbsali: VERY interested indeed!
Are you doing this with the phpUnit plugin? Or just with Lime?
I'm right now working on a project based on symfony 1.0 which is integrated in an existing structure of other projects NOT using symfony. These other projects are unit tested with phpUnit so for consistency i decided to use the phpUnit plugin for unit testing this symfony project too...
Also this is the only part of the system which is not nicely integrated in phpUnderControl... so again i am VERY interested! :)

Thanks!
October 20, 2008
gravatar kbsali: Got my answer by reading the mailing list : Lime it is!

Thanks!
October 20, 2008
gravatar Stingy: Great work, i like to see the plugin.
October 24, 2008
gravatar Pierre: Yes, please package it as a plugin! :lol:
October 30, 2008
gravatar phpleo: Great work,

I like to work together to support symfony 1.0.x, how can I help you?.

Greetings.
November 1, 2008
gravatar Tim: I have it all set up at the moment. I used the sgTest4CruisePlugin plugin to run all tests and create a xUnit .xml file which phpundercontrol can parse. It works really really.

I have also go ant checking all builds out of svn and running the tests.
November 26, 2008
gravatar Sacramento cars for sale: I would like to appreciate this specific post, as there are lots of people including me even, who actually want to seek out some best information regarding PHP and its control. In this regard this specific post is good for all of us. Please keep updating us in the same way
May 30, 2011
gravatar How to enhance your travel business: You must try to upload some information regarding the Symfony plugins, as most of the people are yet unknown to this. Hope you will soon update it, as it will be a great addition over here.
June 18, 2011
gravatar craigslist chicago: i like your post you do good effort to make it more valuable.
thanks for sharing.
June 22, 2011
gravatar Craigslist San Francisco: your work on this project is outstanding.you are doing goo effort.i appreciate your work.this post is so good.thanks for sharing such a nice post.
October 24, 2011
gravatar orlando wrongful death lawyers: There is definitely a lot of work that goes into this. I see so much coming from it. I just love it.
November 3, 2011
gravatar craigslist Boston: i think your thoughts are good and you think very well about this topic.this blog is so good and helpful.thanks for taking time to discus this topic..
November 17, 2011
gravatar adpusdipv: act fast, you save money, because both Symfony Day and the workshop have an early bird discount you can benefit from!

December 23, 2011
gravatar contemporary furniture phoenix:
I enjoy a lot of good data. I really am impressed with your content and I feel I have learned something by reading this article
January 26, 2012
gravatar modern furniture phoenix az:

I enjoy your site! Maybe you have a twitter or fb page? I’d like to hook up and focus on certain things. Thanks for all your work.

January 30, 2012
gravatar discount uggs boots: I am typically to running a blog and i really respect your content. The article has really peaks my interest. 8-O :( :?:
February 1, 2012
gravatar michael michael kors: I really like your way of expressing the opinions and sharing the information. It is good to move as chance bring new things in life, paves the way for advancement,

February 2, 2012

Php5_zce_logo

Upcoming events

I will be speaking 06-02-2012: D-Day
I will be speaking 17-02-2012: Techademy Trainingday February
I will be speaking 23-02-2012: Zend Webinar: Git for Subversion Users

Tags

1337 2008 2010 2011 4developers access modifiers accessibility AdaLovelaceDay09 advent agavi agile alfred amsterdam apache api apple article articles atk atkMetaNode audioscrobbler automation azure backwards compatibility barcelona barcodes bash bbc bbq beatstad belgium best practices bittorrent blogging blogs boards of canada book books bughuntday bundle caching cake cal evans calendar career cat cerf certificate cfp clear cms cologne common sense communities community components conference conferences contest continuous integration contribute contribution crisis css custom d-day datetime DbFinderPlugin decorator decorators deployment devdays development directoryindex docblox doctrine documentation download dpc dpc09 dpc10 dpc11 DPC2008 dreamhost drupal dv7 eclipse ed editors efficiency enterprise errors event events expertise ezcomponents facebook finland flickr fork framework frameworks freelance freeze frontend fun game games geoip germany getting real git github gnome-do google google calendar googletalk graceful degradation hack hackers hidden gem hiphop howto hp HR html http i386 ibuildings icann ide ideasofmarch idm imovie indy ingewikkeld integration international php conference internet interview ipad IPC ipc ipc08 ipc10 ipc11se iterm2 javascript jenkins jenkins-php job job openings jobeet john peel joomla joomladays kiva kubuntu launcher launchy left on the web libraries library lighttpd lime linktuesday linux live london loudblog m2ts mac magazines malware mambo marjolein mediterra meeting meme meta methodology micro-financing microframework microsoft migration movie music mysql namespace namespaces netbeans netherlands newsfire nllgg nos odmarco open source opinion ORM osx paradiso paris partnership pavilion pear pecl performance personal pfc10 pfc11 pfcongres pfcongrez pfz photo php php5.3 phpabstract phpazure phpBB phpbb phpbelgium phpbenelux phpbnl10 phpday phpdoc phpdocumentor phpgg phpitalia phpnw phpnw08 phpnw11 phpstorm phptek phptek09 phpuk2009 phpUnderControl phpunit php|architect php|tek podcast politics portability postcrossing presentation presentations private projects protected prototype PSR-0 public python qa qr codes re2c recruiting refactoring review rewrite ruby on rails san francisco schedule scifi script security sensio seven things sfdaycgn sflive2011 shell scripting silex simplexml slides smfony software sogeti solar sound speakers spl ssh standard standards star trek static steer strings stylesheets subversion symfony symfony live Symfony2 symfonycamp symfonyday symfonylive symfonyUnderControlPlugin talk talks techademy technology techportal tek09 telecommuting terratec terrorism testfest testing textmate textpattern the right tool timeout tips tld todo tomas tools training twig uncon unet usability usergroup validation vhost video vim vinyl virus warp webinar weblogging webservices wiki windows winphp women wordpress work workshop world world of warcraft wpi writing wunderlist xml xpath xsd yara year youtube zc11 ZCE zemanta zend zend framework zend server zend studio zendcon Zend_Form zite
© 2004 - 2012 Stefan Koopmanschap + Powered by Symfony, photos powered by Flickr, links powered by Delicious, Shanghai smilies by Iconbuffet. Feeds: rss / atom. Left on the Web v4.4.0.1