<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Nick Sieger: Continuous Integration Goodness(TM) for Your Ruby Project</title>
    <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Simon Harris</title>
      <description>&lt;p&gt;Rock on! Just integrated my rails plugins with Pulse. Sweet!&lt;/p&gt;</description>
      <pubDate>Fri, 16 Mar 2007 12:49:14 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:1e8321e8-0127-4737-8e73-a7b55b62af57</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-225</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Nick</title>
      <description>&lt;p&gt;@Chaskunz: All this does is generate an XML file after running your Ruby tests or specs.  The files do flag test failures, but it&amp;#8217;s up to the CI system to recognize that.&lt;/p&gt;</description>
      <pubDate>Sat, 03 Feb 2007 01:41:59 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ebac2a3b-427b-42cc-b703-7bc03fd28359</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-207</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Chaskunz</title>
      <description>junit can report whether a test has failed so that CruiseControl can pick that up and tag the build as failed.

&lt;junit failureproperty='junit_test_failed'&gt;&lt;/junit&gt;
 &lt;fail message='One or more JUnit  tests failed' if='junit_test_failed' /&gt;

Can that be done with your plugin?

Our developers tend to only look at the results page if it&amp;#8217;s titled &amp;#8220;Build Failed&amp;#8221;</description>
      <pubDate>Fri, 02 Feb 2007 21:16:49 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:517459a2-2a2a-4382-8faf-f95cd12f960b</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-206</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Slava Imeshev</title>
      <description>&lt;p&gt;Nick,&lt;/p&gt;

&lt;p&gt;You might also want to check our &lt;a href='http://www.viewtier.com/products/parabuild/index.htm' rel="nofollow"&gt;Parabuild&lt;/a&gt;.  It will with any command line build tool and provides JUnit statistics.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jan 2007 19:43:56 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:d925a1db-2806-49c9-a68a-5770e044334c</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-191</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Nick</title>
      <description>&lt;p&gt;@Mike: Bamboo appears to work pretty well for Ruby right now.  There are probably quite a few things (like what I did here) to make the integration tighter and track more items on Ruby and Rails projects (like the output of &amp;#8220;rake stats&amp;#8221; and possibly rcov coverage data).  Detecting and adding a Rake builder would be a nice step.&lt;/p&gt;

&lt;p&gt;There&amp;#8217;s also potential for JRuby integration &amp;#8211; you could ship it and possibly have cross-platform, out-of-the-box Rake support, which would be pretty sweet.&lt;/p&gt;

&lt;p&gt;Feel free to email me or come look for me in #jruby on freenode if you want to discuss further.&lt;/p&gt;</description>
      <pubDate>Mon, 08 Jan 2007 03:32:39 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:306dbabb-7bad-4c75-90db-3605067e9b6c</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-190</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Mike Cannon-Brookes</title>
      <description>&lt;p&gt;Nick - thanks for the plug. Most appreciated! &lt;/p&gt;

&lt;p&gt;While I have you, is there anything you think we could do to &lt;em&gt;better&lt;/em&gt; support Ruby projects out of the box? I&amp;#8217;m sure the team would love to hear about them. &lt;/p&gt;

&lt;p&gt;We&amp;#8217;re hardly Ruby experts here, but have dabbled quite a bit. I expect the features required by true Ruby houses would be far more useful coming from you than me :)&lt;/p&gt;

&lt;p&gt;Thanks again,
Mike&lt;/p&gt;</description>
      <pubDate>Sun, 07 Jan 2007 22:57:22 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:32d36a3c-b982-44cc-b660-58025f0d9167</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-189</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Nick</title>
      <description>&lt;p&gt;@Chris: I haven&amp;#8217;t checked out Cerberus yet, thanks for the link.  I&amp;#8217;ve been using Bamboo because we have a bunch of Java projects to build also.&lt;/p&gt;

&lt;p&gt;Thanks for reporting the require issue.  How did I miss that?!?  Fixed now in svn.&lt;/p&gt;</description>
      <pubDate>Sun, 07 Jan 2007 06:06:03 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:75965671-4d73-4deb-aec3-5da0fcc66a49</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-188</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Chris Carter</title>
      <description>&lt;p&gt;Hey, There&amp;#8217;s a small issue with it, the test unit reporter does not require &amp;#8216;ci/reporter/core&amp;#8217; which causes errors.&lt;/p&gt;</description>
      <pubDate>Sun, 07 Jan 2007 05:23:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:a574a230-9f7d-46ef-8b9e-eff040f68418</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-187</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Luke Francl</title>
      <description>&lt;p&gt;Ah, that&amp;#8217;s awesome.&lt;/p&gt;

&lt;p&gt;I was thinking of doing this so I could use Hudson for doing continuous integration (check it out if you haven&amp;#8217;t &amp;#8211; it&amp;#8217;s awesome, and Free Software, too).&lt;/p&gt;

&lt;p&gt;But, now someone did it for us! &lt;/p&gt;</description>
      <pubDate>Sat, 06 Jan 2007 19:25:41 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:ee1df35a-d6bb-401a-9348-ce8591fd82af</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-185</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Chris Carter</title>
      <description>&lt;p&gt;Have you seen &lt;a href='http://cerberus.rubyforge.org/' rel="nofollow"&gt;Cerberus&lt;/a&gt;?&lt;/p&gt;</description>
      <pubDate>Sat, 06 Jan 2007 19:10:04 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:2a4784de-fa02-499a-8e47-6d458e170653</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-184</link>
    </item>
    <item>
      <title>"Continuous Integration Goodness(TM) for Your Ruby Project" by Pat Eyler</title>
      <description>&lt;p&gt;I&amp;#8217;d love to see a gem (since I don&amp;#8217;t do any real rails work).&lt;/p&gt;</description>
      <pubDate>Sat, 06 Jan 2007 17:41:27 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:318b7eba-6979-409c-97ad-cae41729139f</guid>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project#comment-182</link>
    </item>
    <item>
      <title>Continuous Integration Goodness(TM) for Your Ruby Project</title>
      <description>&lt;p&gt;As much as we&amp;#8217;d like to think we live in a Ruby-glasses-colored world, the fact is there are plenty of neat toys out there that don&amp;#8217;t know a bit about us. One that I&amp;#8217;m currently enamoured with is &lt;a href="http://confluence.atlassian.com/display/BAMBOO"&gt;Bamboo, Atlassian&amp;#8217;s new continuous integration server&lt;/a&gt;.  But, most commercial CI products are aiming for a wider market, and that means Java and Ant.  Ant and JUnit predate Rake and Test::Unit by a few years, so I&amp;#8217;m afraid they beat us to the punch, so that now the &lt;a href="http://ant.apache.org/manual/OptionalTasks/junit.html"&gt;JUnit Ant task&amp;#8217;s&lt;/a&gt; XML format is pretty much the first consideration for a continuous integration server to understand in order to display a test report for a build.&lt;/p&gt;

&lt;p&gt;Where does that leave us Rubyists who want to play along with the bigs?  &lt;a href="http://svn.caldersphere.net/svn/main/ci_reporter"&gt;Right here!&lt;/a&gt;.  With support for not just &lt;a href="http://blog.nicksieger.com/articles/tag/rspec"&gt;RSpec&lt;/a&gt;, but Test::Unit too.&lt;/p&gt;

&lt;p&gt;Right now, it&amp;#8217;s packaged as a Rails plugin, because I&amp;#8217;m lazy and I don&amp;#8217;t need anything else right now.  If you&amp;#8217;re interested in a gem, please leave a comment.  To install into your Rails app, the usual:&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;./script/plugin install http://svn.caldersphere.net/svn/main/ci_reporter&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;That&amp;#8217;s it!  Now all you have to do is have your CI server invoke an extra target before the main target that runs your tests.&lt;/p&gt;

&lt;p&gt;For RSpec,&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;rake ci:setup_rspec spec&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;will leave one XML file per context in the &lt;code&gt;spec/reports&lt;/code&gt; directory (creating it if it doesn&amp;#8217;t exist).&lt;/p&gt;

&lt;p&gt;For Test::Unit,&lt;/p&gt;

&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_default "&gt;rake ci:setup_testunit test&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;will leave one XML file per test case class in the &lt;code&gt;test/reports&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;Most CI servers have configuration telling them where to look for test reports.  Simply plug in one of these directories, and you&amp;#8217;re set.  Now sit back and watch your test or spec failures get tracked in your automated builds.&lt;/p&gt;

&lt;p&gt;&lt;img src="/files/test-results.png" alt="test results" title="test results"/&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 06 Jan 2007 15:42:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:e3f1c8a2-8050-44b8-a1f5-02cecb0ff92c</guid>
      <author>Nick Sieger</author>
      <link>http://blog.nicksieger.com/articles/2007/01/06/continuous-integration-goodness-tm-for-your-ruby-project</link>
      <category>ruby</category>
      <category>continuousintegration</category>
      <category>junit</category>
      <category>ant</category>
      <category>rake</category>
      <trackback:ping>http://blog.nicksieger.com/articles/trackback/181</trackback:ping>
    </item>
  </channel>
</rss>
