links for 2009-01-06
- a little madness » Continuous Integration Myth: Large Teams Only I think a 1-man team could benefit from CI - because it's not all about the code … (tags: ci)
- Thor - alternative to Rake for Ruby scripting This is like Christmas. Work in the City, come back to startups and find a stocking full of new toys … (tags: deployment ruby)
- Kohsuke Kawaguchi's Blog: Building a custom OpenSolaris LiveCD It's Buildix for OpenSolaris and Hudson! (tags: hudson ci)
- Wifi rabbit notifier plugin for Hudson - eric.lemerdy The rabbits will become self-aware one day. They'll just angrily flap their ears, though. (tags: ci hudson)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2008-12-30 London OpenSolaris User Group at OpenSolaris.org Open Solaris could...
- links for 2008-12-24 collect {thoughts}: Mashup your RSS Feeds with ruby +...
- links for 2009-01-04 The Technical Blog of Paul Miles: How to Take...
links for 2009-01-05
- Puppet SVN Deploy definition | Carl's Rantings This could be big. DLS to abstract deploying software from subversion. Once it does tags, I'll be very interested. via @littleidea (tags: deployment)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
- links for 2009-01-02 Local Continuous Integration with Integrity | Morethanseven Lightweight CI...
- links for 2009-01-04 The Technical Blog of Paul Miles: How to Take...
Continuous Integration Cage Fight: Team City
Second to last in the talk was Team City, presented by Yegor Yarko of JetBrains.
They’ve done a very good job of the tool and used their position as developers of IntelliJ and Resharper to promote this product very cleverly: so I don’t think I need to do much introduction to the tool. Here’s the notes I managed to scratch down:
- Free for 20 developers and 20 projects
- Enterprise license $3000, more build agents (you get 2 or 3 free) are $300 each
- Configuration is via xml file or web app
- Build agents are secured: you have to grant them access
- Unique feature: Gives failed test feedback before build finishes.
- Unique feature: IDE plugins (IntelliJ, Eclipse, Visual Studio)
- Unique feature: auto commit (it runs your tedious build and then commits to your repo - while you dine)
- It has static code analysis features
- It is very developer friendly
- Unique feature: stop a build [though I think others can do that]
- Very good .NET support
- They might open source some of the plugins
Yegor also did a great job photographing the conference. Link
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Continuous Integration Cage Fight: Team City
Related posts:
- Continuous Integration just got interesting I used to describe CI as “cron with style”. I...
- New, shiny Rake support in Team City You couldn’t pay me to run CruiseControl.rb now. Oh wait....
- Eras of Continuous Integration (image taken from debaird’s photostream) November 3, 2008: updated...
links for 2009-01-04
- The Technical Blog of Paul Miles: How to Take Screenshots during Selenium Test Execution Nice to see the errors in your tests, isn't it? (tags: testing)
- YouDevise Developer blog - Recording VNC Session How to record a Selenium test run, via VNC (tags: testing)
- Work at the dining table: Catching relative url issues in rails early with –prefix I totally love things like this. It catches deploy failures due to a baked-in expectation of the URL structure. It is something that you can and should test for. (tags: deployment rails)
- xFruits - Compose your information system The possibilities for displaying project data are endless. I think I need a lie down. (via Daily Blog Tips) (tags: xfd)
- VirtualBox - Sun's virtualization platform When the heck did they do this? (tags: virtualization)
- Leveraging Subversion Hooks for Fun and Profit — Agile Web Operations Decent article. Not sure so about the email notifications in this day and age …. I'll have to ask. (tags: scm)
- Continuous Integration Blueprints: How to Build an Army of Killer Robots With Hudson and Cucumber Killer robots. What happens if you checkin on a broken build? (tags: ci)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2008-12-28 TeamCity Dev Blog: TeamCity 4.0.1 is released Shedload of...
- links for 2009-01-03 InfoQ: Keith Braithwaite, an Agile Skeptic Damn, he's good....
- links for 2009-01-05 Puppet SVN Deploy definition | Carl's Rantings This could...
Sticking plaster over a gaping wound
Another thing that I learned in 2008: the build manager can’t be responsible for ensuring the quality of the code that they build and deploy. We had QA’s but there were loads of little things to check: Were the release instructions accurate? Was there a rollback process? Did all the scripts actually work?
I did have some success in getting the obvious issues caught with a test. There were ongoing issues with file encodings until I had someone write a validator that could be run from a unit test framework. The same approach also managed to catch issues like incompatible database scripts.
All in all though, there was too much to do. We managed to get the checklist passed up to the developers and release managers. We won that battle. I lost the war.
(image taken from jluster’s photostream)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Sticking plaster over a gaping wound
Related posts:
- Ant Best Practices: Use Ant as the Least Common Denominator (image taken from Clearly Ambiguous’ Photostream) We’re back to the...
links for 2009-01-03
- InfoQ: Keith Braithwaite, an Agile Skeptic Damn, he's good. Keith isn't afraid to call a fraud a fraud. He's not like that guy who wrote for Da Register, though: he's one of the most experienced Agile practitioners in this fair land that we call England. (tags: agile)
- A job, a mission, a career: all without a path or a name. - Esoteric Curio via Ade. "This job isn't for failed developers". (tags: sysadmin architecture)
- Continuous Integration - The Crucial Parts | Engineering Game Development Part 3. Still not seeing any game specific bits yet. We'll hang on though. (tags: ci)
- Meme Agora: Tactics vs. Strategy (SOA & The Tarpit of Irrelevancy) Neal just described my last job, perfectly. I feel better now. (tags: architecture)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2008-12-28 TeamCity Dev Blog: TeamCity 4.0.1 is released Shedload of...
- links for 2009-01-04 The Technical Blog of Paul Miles: How to Take...
- links for 2009-01-05 Puppet SVN Deploy definition | Carl's Rantings This could...
links for 2009-01-02
- Local Continuous Integration with Integrity | Morethanseven Lightweight CI for Python and Ruby teams (tags: ci)
- Cuberick: Distribute Your Software Just Like Ubuntu With Launchpad I don't mind making Debian packages, but this makes it trivial. Incredibly powerful way to distribute software and it's available to you. (tags: deployment packaging)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2009-01-05 Puppet SVN Deploy definition | Carl's Rantings This could...
- links for 2009-01-04 The Technical Blog of Paul Miles: How to Take...
- links for 2008-12-30 London OpenSolaris User Group at OpenSolaris.org Open Solaris could...
New Year Site Admin
Happy new year! I have done some long-overdue admin work - silly things like upgrading WordPress plugins, etc.
- The Related Posts plugin has been replaced because it didn’t actually seem to work. Hopefully as I finish adding the right categories to pages, it’ll be useful.
- The Creative Commons license didn’t migrate over from Blogger. It has now.
- At least one RSS aggregator is republishing this blog. That one cheeky site is in violation of the CC “No Commercial” license. There’s now a little footer on the RSS feed to let people know where the content came from.
Stay warm everyone. Unless you live in the southern hemisphere. You’re probably doing just fine.
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
No related posts.
New Year Site Admin
Happy new year! I have done some long-overdue admin work - silly things like upgrading WordPress plugins, etc.
- The Related Posts plugin has been replaced because it didn’t actually seem to work. Hopefully as I finish adding the right categories to pages, it’ll be useful.
- The Creative Commons license didn’t migrate over from Blogger. It has now.
- At least one RSS aggregator is republishing this blog. That one cheeky site is in violation of the CC “No Commercial” license. There’s now a little footer on the RSS feed to let people know where the content came from.
Stay warm everyone. Unless you live in the southern hemisphere. You’re probably doing just fine.
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- Site admin - change to del.icio.us links I just deactivated the del.icio.us plugin for WordPress and the...
links for 2008-12-30
- London OpenSolaris User Group at OpenSolaris.org Open Solaris could be interesting. Soalris x86 was always a rock solid OS with crap hardware support. Now that Sun gave those muppets at SCO all that money to buy the device drivers, I want to give it another shot. (tags: unix)
- Comic: The Windows User I love writing these comics. Yes, I'm not John K and I can't draw to save my life. Ideally, I'd be discussing these over a beer with Terry Colon and having him do the artwork. But I still like this. (tags: build-doctor)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2008-12-29 tattletail - alternative to bigvisiblecruise on my to-do list:...
- links for 2009-01-05 Puppet SVN Deploy definition | Carl's Rantings This could...
- links for 2009-01-03 InfoQ: Keith Braithwaite, an Agile Skeptic Damn, he's good....
2008 in posts
Top posts on build-doctor.com, by traffic.
- January: Irradiating the whole team
- February: If I ever complain about traffic, ask me how it was in February 2008. A short news item was the most read article.
- March: Refactor your configuration file This one really seemed to strike a chord.
- April: The CruiseControl best practices Series
- May: Antcall is evil
- June: guardian.co.uk build radiator
- July: the post above was a double whammy.
- August: 5 software build patterns
- September: Branching: do it like this and nobody gets hurt
- October: Six tips for automated releases
- November: The Ant best practices series
- December isn’t over yet, but it looks like we have another double whammy.
The last three months of this year have been on a new platform - wordpress. Traffic has fallen during this time; probably because I hadn’t put the social media voting buttons back on. No big deal. I write for the long term here. It also helps with the demons.
(image taken from ♥ellie♥’s photostream)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- Build Doctor Retrospective Season: Traffic I had no idea how the Internet was going to...
links for 2008-12-29
- tattletail - alternative to bigvisiblecruise on my to-do list: check this out of svn and fire it up. I would ideally like something that draws objects on the screen without the aid of a browser (tags: ci)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
Comic: The Windows User
In 2008 I found out that some people still use Notepad.
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
links for 2008-12-28
- TeamCity Dev Blog: TeamCity 4.0.1 is released Shedload of issues have been resolved (tags: ci teamcity)
- Continuous Integration - The Benefits | Engineering Game Development … game CI part two … (tags: ci)
- Continuous Integration - Shaky Foundations | Engineering Game Development I'm interested in how CI is different in game development … here's part one … (tags: ci)
- Setting Up A Secure Subversion Source Code Repository — Agile Web Operations Nice article from Agile Web Ops on setting up an SVN repo using Debian. Yes, the cool kids aren't using SVn, but not all teams are ready to play with the cool kids, mmm-kay? (tags: scm)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- links for 2008-12-29 tattletail - alternative to bigvisiblecruise on my to-do list:...
CruiseControl Build Radiator
Sudhindra Rao from ThoughtWorks has released a Build Radiator (Big Visible thing) for all the CruiseControls that support CCTray.
I installed it tonight. Needed to install the rack and activerecord gems. It would be nice to see it wrap around if you have more than a few projects. Most teams would probably do fine with this on a big display, I suspect.
This is pretty much what Michael and I did last year, except Sudhindra has made his nicely generic. Oh, and open source and available to the public. That helps a lot.
Nice work, Sudhindra.
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- CruiseControl radiator - very disco Cruise Control LightsOriginally uploaded by Znachor It looks like something...
- The guardian.co.uk Build Radiator - a guest post by Michael Brunton-Spall Michael Brunton-Spall and I both worked on the Guardian ‘R2′...
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
links for 2008-12-24
- collect {thoughts}: Mashup your RSS Feeds with ruby + sinatra + pipe The original use case for this was mashing up RSS feeds from CI servers. Handy. (tags: ci)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
Season’s Greetings
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
- Build Doctor Retrospective Season: Traffic I had no idea how the Internet was going to...
links for 2008-12-22
- Pete W's idea book: Advanced NANT Techniques Nice use of a diff tool to do deployments of only the deltas. Not sure what happens for a file deletion. I'm quite fond of rsync for that. (tags: nant .net)
Post originally published at: The Build Doctor under a Creative Commons License. Some Rights Reserved.
Related posts:
- New Year Site Admin Happy new year! I have done some long-overdue admin work...
Site admin - change to del.icio.us links
I just deactivated the del.icio.us plugin for WordPress and the Feedburner Link Splicer on this blog. In their place will be a daily post of interesting del.icio.us links. It seems simpler this way.
Hang onto your hats.
(image taken from *clairity’s* photostream)
No related posts found, but try these
Build Refactoring: Delete Boolean Property
(image taken from Kurtis Scaletta’s photostream)
Last time, you read about the extract target refactoring. Today, I’m going to show you one that I love to perform: delete boolean property. Have a look the smell first:
<project default="unit_tests">
<property name="junit.enabled" value="true" />
<target name="-check_junit_enabled">
<condition property="junit.really.enabled">
<and>
<equals arg1="${junit.enabled}" arg2="true" />
</and>
</condition>
</target>
<target name="unit_tests" if="junit.really.enabled" depends="-check_junit_enabled">
<mkdir dir="build/test-results"/>
<junit>
<test name="FooBarImplTest" todir="build/test-results"/>
<classpath>
<fileset dir="build"/>
<fileset dir="lib"/>
</classpath>
<formatter type="xml"/>
</junit>
</target>
</project>
This smell starts out with the notion of properties to control the execution of your build. So far so good. “Hang on”, someone pipes up: “If you’re going to have a property, I want to be able to set it to values like ‘true’ or ‘false’”. With more work you manage to express the logic in Ant. Each target now needs to depend on at least one other to set the properties that control the execution of the build. This rapidly turns the build into dependency soup.
You also have to set two properties: the one that has the boolean value, and the other that exists to actually signal to your build tool that it should run a target.
How do you resolve this? Start deleting all those extra targets that ensure that the right properties are set. Like this:
<project default="unit_tests"> <target name="unit_tests" unless="junit.disabled"> <mkdir dir="build/test-results"/> <junit> <test name="FooBarImplTest" todir="build/test-results"/> <classpath> <fileset dir="build"/> <fileset dir="lib"/> </classpath> <formatter type="xml"/> </junit> </target> </project>
What do you have to change in the targets that do the work? Just choose a decent property name to put in the if or unless tags and then delete any dependencies on targets that resolve properties. I decided that the default behaviour should be running the unit tests. To opt out you can pass the argument -D:junit.disabled=foo on the command line.
So what about the person who wanted the boolean properties? Either:
- Make them support the build,
- Write a custom Ant task to do all this, and make it run in the body of the Ant build file and not inside a target. I’ll even write one for them if they dig deep enough.
Happy refactoring. If you like this post, my article on Ant Refactoring is available to buy in the ThoughtWorks Anthology:


