CruiseControl.rb 1.0


#1

Hmmm. Another Continuous Integration tool? What is that, the millionth
one?

Yup, pretty much, but we’re taking a different approach than the others

  • in
    a way, back to the basics. Here’s our motto:

    Easy to install, pleasant to use and simple to hack

What kind of good stuff does that mean?

  • download and get building in 5-10 minutes (maybe 15 if you stop to
    read
    the manual)
  • little to no configuration (seriously, just tell it your Subversion
    URL)
  • works for Ruby, Java, .NET … anything that you can invoke from the
    command line
  • aesthetic beauty (not bad for a build tool)

Check it live out at http://cruisecontrolrb.thoughtworks.com/projects
and
then download and use it.
Feedback welcome - we’re working on release 1.1 now.

CC.rb team
ThoughtWorks


#2

On Mar 12, 2007, at 11:27 PM, Alexey V. wrote:

Check it live out at http://cruisecontrolrb.thoughtworks.com/
projects and
then download and use it.

From the live demo, I was able to navigate to the documentation page:

http://cruisecontrolrb.thoughtworks.com/documentation/docs.html

but when I clicked the “Download” link at the bottom of that page, I
got a 404.


#3

On 3/13/07, Lyle J. removed_email_address@domain.invalid wrote:

From the live demo, I was able to navigate to the documentation page:

    http://cruisecontrolrb.thoughtworks.com/documentation/docs.html

but when I clicked the “Download” link at the bottom of that page, I
got a 404.

The link is now fixed, thanks.
The download page is here: http://rubyforge.org/frs/?group_id=2918

Best regards,
Alexey V.


#4

On 3/13/07, Chris C. removed_email_address@domain.invalid wrote:

Is there any reason you don’t have it parse the XML output of svn,

Other than “we didn’t know that Subversion talks in XML until last
Sunday”?
No. :slight_smile:

it would probably be much easier.

Probably.

The downside is that it’s not very human readable, which hinders
troubleshooting. On the other hand, XML apparently solves localization
problem for some people with non-english Subversion installations. So,
it
definitely deserves a serious look.

Alex


#5

On 3/12/07, Alexey V. removed_email_address@domain.invalid wrote:

the manual)
ThoughtWorks

Hi,
Is there any reason you don’t have it parse the XML output of svn, it
would probably be much easier.


#6

I tried running CC.rb on Solaris and got this after calling ./cruise add
… :

FAILED: Unknown OS: solaris2.8

I added this to lib/platform.rb:

when /solaris/ then 'solaris'

I’m hoping that the platform makes a difference only if it is Windows.

I’m having other issues with SVN at the moment, so I can’t tell if
things work or not (things seem to work since ./cruise add …
finishes without complaints now).


#7

It’s not stupid, bu the answer is, to integrate. Yes it doesn’t build
really, but if you have 10 people working on a project it’s useful to
make sure it’s all still working together, tests run properly etc.

With the .net developers where I work it’s easy to see that, even if
it wasn’t a compiled language, they’d need the CI to keep things
running smoothly.

Admittedly when it’s one developer, or developers working on
distinctly separate modules it’s not as important.

–Kyle


#8

On 3/14/07, Jeff removed_email_address@domain.invalid wrote:

repository is it going to “build”?

When I used to work with .NET, it was helpful to have daily binaries
from source, so that we could run the test suite, or be able to
install the latest build on a test machine somewhere.

I actually plan on using this FOR .NET development. While CC.Net is
useful,
it isn’t going to help me with my linux based Mono builds. This could
be an
extremely useful tool for those of us building cross platform software,
and
wanting a simple CI tool to use for multiple languages.

But with Rails, for example, I run my tests before I commit to


#9

On 3/14/07, Kyle S. removed_email_address@domain.invalid wrote:

Admittedly when it’s one developer, or developers working on
distinctly separate modules it’s not as important.

When it’s one developer, no. Multiple developers working on distinctly
separate modules, on the other hand? If these modules need to talk to
each
other at all, CI is sweet.

Or consider the Ruby on Rails framework. It has to work on multiple
databases and operating systems. You won’t set them all up on your
development box and run all tests every time you check something in.
Until
there was a continuous integration rig that ran unit tests against
Oracle
and SQLServer, unit tests for those databases were perpetually broken.

Alex


#10

On Mar 12, 11:27 pm, “Alexey V.” removed_email_address@domain.invalid
wrote:

Hmmm. Another Continuous Integration tool? What is that, the millionth
one?

I have a feeling this is going to sound like a stupid question, but
why does anyone need a continuous integration tool for a dynamic
language like Ruby? In other words, what exactly in my subversion
repository is it going to “build”?

When I used to work with .NET, it was helpful to have daily binaries
from source, so that we could run the test suite, or be able to
install the latest build on a test machine somewhere.

But with Rails, for example, I run my tests before I commit to
subversion - it was pretty easy to write a rake task to run the tests,
and then commit the code automatically if all of the tests passed.
The same could be said for any Ruby project, not just Rails.

Maybe I’m thinking in a narrow way, based on my limited experience
with Ruby and Rails projects so far. So I’m just curious, and to
expand my own horizons a bit - what are some examples of when a Ruby
developer would need a continuous integration tool?

Thanks!
Jeff


#11

At my job we use Cerberus for CI. We have different programmers
working on different parts of a large application in a complex domain,
including a DSL and a parser. Breaking other people’s stuff is easy.
You check something in, Cerberus runs the tests automatically. Any
project with more than a few people on it can benefit from CI.

There’s been a lot of talk about CruiseControl in the last couple
days, by the way, including a rumor that it’ll become the official CI
tool of Rails.


#12

On 3/14/07, Giles B. removed_email_address@domain.invalid wrote:

There’s been a lot of talk about CruiseControl in the last couple
days, by the way, including a rumor that it’ll become the official CI
tool of Rails.

Just a side note, but I finally got around to trying out
CruiseControl.rb today and I’m really impressed. We were already using
CruiseControl (CruiseControl.java?) to manage the builds of about
seven Java-based projects. The only thing I had to add to get stuff
working under CC.rb was to tell the configuration file
(cruise_config.rb) for each project what command it should use to
build that project, i.e.

Project.configure do |project|
  project.build_command = "ant clean; ant deploy"
end

and it was off to the races. I think I had everything up and running
in maybe twenty minutes, as opposed to, well, a much longer time
when I first set up CruiseControl. Very nice indeed.

The only thing I’m missing at the moment is some kind of plugin for
viewing the JUnit test results report. Maybe I should get to work on
that. :wink:


#13

On 3/14/07, Giles B. removed_email_address@domain.invalid wrote:

There’s been a lot of talk about CruiseControl in the last couple
days, by the way, including a rumor that it’ll become the official CI
tool of Rails.

It’s a bit more than just a rumor. :slight_smile:
http://cruisecontrolrb.thoughtworks.com/builds/RubyOnRails
http://www.ruby-forum.com/topic/100947

Alex


#14

On 3/14/07, Lyle J. removed_email_address@domain.invalid wrote:

The only thing I’m missing at the moment is some kind of plugin for
viewing the JUnit test results report. Maybe I should get to work on
that. :wink:

Just make Ant format JUnit output as HTML, and copy the directory with
all
those .html files into $CC_BUILD_ARTIFACTS. See what happens. :slight_smile:

Alex


#15

On 3/14/07, Lauri P. removed_email_address@domain.invalid wrote:

I tried running CC.rb on Solaris and got this after calling ./cruise add
… :
FAILED: Unknown OS: solaris2.8

Thanks for pointing it out, I fixed it on the trunk.

Alex Verkhovsky
ThoughtWorks


#16

On Mar 14, 1:15 pm, “Jeff” removed_email_address@domain.invalid wrote:

I have a feeling this is going to sound like a stupid question, but
why does anyone need a continuous integration tool for a dynamic
language like Ruby? In other words, what exactly in my subversion
repository is it going to “build”?

What I would like is for Ruby itself to use CI. That way the core team
isn’t relying on bug reports from preview releases.

I figure Linux is covered since that’s what Matz develops on. If we
could get folks to give the core team access to Windows, OS X, AIX and
HP-UX boxes (and various versions of each), we would have much greater
confidence with each release.

Regards,

Dan

PS - I’ve got a Solaris 10 laptop and Windows XP Pro desktop the core
team can use for CI if they wish.


#17

Daniel B. wrote:

What I would like is for Ruby itself to use CI. That way the core team
isn’t relying on bug reports from preview releases.

Once we get Rails well covered on our yet-to-be-built CI rig, we can
certainly think about adding Ruby to the same rig, too.
Question to Matz or anyone else from Ruby-core: do you think that you
need
something like this?

Alex Verkhovsky
ThoughtWorks


#18

On Mar 15, 12:10 pm, Bil K. removed_email_address@domain.invalid wrote:

Daniel B. wrote:

What I would like is for Ruby itself to use CI. That way the core team
isn’t relying on bug reports from preview releases.

+1

But don’t we need something like Rubicon, aka rubytests?

For starters I’d vote they just run against Ruby’s builtin test suite.
However, CI would (or could, I presume) also smoke out issues during
the configure/make process, which seems to be one of the major issues
that comes up in the preview releases, especially for Solaris and AIX
it seems.

Regards,

Dan


#19

Daniel B. wrote:

What I would like is for Ruby itself to use CI. That way the core team
isn’t relying on bug reports from preview releases.

+1

But don’t we need something like Rubicon, aka rubytests?

http://rubytests.rubyforge.org/

I vaguely recall Rubicon being re-worked as of last RubyConf,
but I can’t recall the new name/site…

Later,