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.
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.
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).
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.
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
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.
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?
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.
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.
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.
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?
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.