Loading ...
Sorry, an error occurred while loading the content.

Re: [XP] How to get started with continuous integration and automated testing?

Expand Messages
  • Adam Sroka
    P.S. the other key thing is that you want your build to be informative. By which I mean: 1) It runs fast so that you can run it often. 2) It fails quickly when
    Message 1 of 7 , May 24, 2010
    • 0 Attachment
      P.S. the other key thing is that you want your build to be
      informative. By which I mean:

      1) It runs fast so that you can run it often.
      2) It fails quickly when something is broken.
      3) When it fails it leads you to precisely what is broken so that you
      can fix it.
      4) When nothing is broken it does not fail. In other words it is not
      "brittle" and doesn't waste your time.

      I blogged about this a few months back:
      http://www.bigvisible.com/asroka/informative-build/

      On Mon, May 24, 2010 at 1:17 PM, Adam Sroka <adam.sroka@...> wrote:
      > All good advice below.
      >
      > The key to successful build automation is two things, IMO: 1) follow
      > the Pragmatic Programmers' advice - anything that you will have to do
      > over again should be automated (They called this Ubiquitous
      > Automation.) 2) realize that automating is the same thing as
      > programming. Therefore, you need to use similar ideas and tools to
      > accomplish it.
      >
      > My one caveat to what Cory said is that I wouldn't recommend you start
      > with Ant unless you are already using it. Ant is an extremely poor
      > automation tool. It has a deliberately limited feature set, it uses a
      > verbose XML based syntax, and it is designed in a way that forces you
      > to repeat yourself a lot more than any programmer should be
      > comfortable with.
      >
      > Fortunately there are a lot of good alternatives available today. The
      > most popular is maven. I'm not a huge maven fan either, but provided
      > you can structure your application in the way maven recommends and you
      > don't need to do anything advanced that requires a lot of plugins then
      > maven is not bad.
      >
      > Emerging alternatives include Schmant (http://www.schmant.org/),
      > Buildr (http://buildr.apache.org/), and Gradle
      > (http://www.gradle.org/). I haven't used any of these extensively, but
      > I've played with them enough to feel that they are better than ant.
      > Each provides a DSL for builds similar to rake for ruby. They all have
      > varying degrees of integration with Ant, Maven, and Ivy.
      >
      > My own preference right now is to use rake from jruby. Currently there
      > is solid gem support for working with ant and maven from your rakefile
      > (http://www.infoq.com/news/2010/04/jruby-15)
      >
      > On Sun, May 23, 2010 at 10:24 AM, Cory Foy <usergroup@...> wrote:
      >> Hi Tony,
      >>
      >> Chris pointed out TeamCity, which I second, but before you go down that
      >> route...
      >>
      >> To have automated testing and continuous builds, you need a build
      >> script. Start there. Build something in ant which builds everything you
      >> need. And I mean, everything. If the output from Ant isn't usable as you
      >> would normally do it, then none of the tools will wave a magic wand to
      >> make it work.
      >>
      >> Once you have that (and being Java, you probably do) then setup
      >> TeamCity. You can install it locally. It takes about 20 minutes from
      >> download to running a build. There is also CruiseControl which was the
      >> standard for many years, and Hudson, which I don't have much experience
      >> with.
      >>
      >> But if you install TeamCity, you'll see why there aren't a lot of blog
      >> posts out there. Most of the work isn't in the CI tool, but in the
      >> script you write back end. The CI tool can then coordinate that build,
      >> running your tests, collecting code coverage, etc.
      >>
      >> Good luck!
      >>
      >> --
      >> Cory Foy
      >> http://www.coryfoy.com
      >> http://twitter.com/cory_foy
      >>
      >> tony_t_tubbs wrote:
      >>> I'm interested in agile, XP particularly appeals to me.  I've been acquiring the book smarts for awhile, but gaining the actual skills is much slower.  In my environment, it seems there are fewer of us interested in agile than not (or actively perusing it anywya), and even fewer in wanting to gain a solid feel for 12-step XP like I would.  Plus we don't get to work together that often, so things like pair programming may never happen.  That is unless we can take baby steps and show the improvement each practice brings to the process one at a time.  That's my current working theory anyway.
      >>>
      >>> That brings me to the point of my question – how to get started with the automation parts.  I'm not sure what to search for, but tried to Google things like "Agile Stack" thinking there would be something like WAMPP or XAMPP only geared toward the agile practices.  I'd think by now there'd be writings on .NET setups, Java setups, JavaScrip setups, Ruby, etc.
      >>>
      >>> I've not experience these in action, but would like to see if it is possible to at least setup my own machine to make it happen.  We do use Hudson, but this is only for our prod ready stuff.  On a daily basis we use Eclipse and Subversion.  Nothing is automagically built as things are checked in, and while I (and we) have been getting better at writing JUnit or JsUnit tests, it's still a manual step to check the state of things.
      >>>
      >>> Any pointers to books, blogs, archives, etc that could get me going in the right direction would be much appreciated.   Especially anything that's geared toward the lone coder trying to get his local machine setup though he's constrained by the use of the group tools (subversion, etc) he doesn't have admin rights to.   I like to think that of developers desiring to become more agile, the majority are in situations similar to mine.  Coaches, how would you say my assessment stack up with reality?
      >>>
      >>>
      >>>
      >>
      >>
      >>
      >>
      >> ------------------------------------
      >>
      >> To Post a message, send it to:   extremeprogramming@...
      >>
      >> To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe@...
      >>
      >> ad-free courtesy of objectmentor.comYahoo! Groups Links
      >>
      >>
      >>
      >>
      >
    • tony_t_tubbs
      Thanks all. Your input has helped clarify how CI works - all the pieces parts. It turns out that our system is doing much more than I thought too. I don t
      Message 2 of 7 , May 25, 2010
      • 0 Attachment
        Thanks all. Your input has helped clarify how CI works - all the pieces parts. It turns out that our system is doing much more than I thought too. I don't think I'll have to be setting up my local machine after all. Our Hudson, Subversion and Groovy (vs Ant) scripts do build frequently, provided changes have been checked in. Sweet!


        --- In extremeprogramming@yahoogroups.com, "tony_t_tubbs" <tony_t_tubbs@...> wrote:
        >
        > I'm interested in agile, XP particularly appeals to me. I've been acquiring the book smarts for awhile, but gaining the actual skills is much slower. In my environment, it seems there are fewer of us interested in agile than not (or actively perusing it anywya), and even fewer in wanting to gain a solid feel for 12-step XP like I would. Plus we don't get to work together that often, so things like pair programming may never happen. That is unless we can take baby steps and show the improvement each practice brings to the process one at a time. That's my current working theory anyway.
        >
        > That brings me to the point of my question – how to get started with the automation parts. I'm not sure what to search for, but tried to Google things like "Agile Stack" thinking there would be something like WAMPP or XAMPP only geared toward the agile practices. I'd think by now there'd be writings on .NET setups, Java setups, JavaScrip setups, Ruby, etc.
        >
        > I've not experience these in action, but would like to see if it is possible to at least setup my own machine to make it happen. We do use Hudson, but this is only for our prod ready stuff. On a daily basis we use Eclipse and Subversion. Nothing is automagically built as things are checked in, and while I (and we) have been getting better at writing JUnit or JsUnit tests, it's still a manual step to check the state of things.
        >
        > Any pointers to books, blogs, archives, etc that could get me going in the right direction would be much appreciated. Especially anything that's geared toward the lone coder trying to get his local machine setup though he's constrained by the use of the group tools (subversion, etc) he doesn't have admin rights to. I like to think that of developers desiring to become more agile, the majority are in situations similar to mine. Coaches, how would you say my assessment stack up with reality?
        >
      Your message has been successfully submitted and would be delivered to recipients shortly.