Friday, March 13, 2009

JetBrains gone twitting

Recently I've created a twitter account with basic purpose to provide some support for JetBrains TeamCity and Checkvist.

Many JetBrainers actively twit and provide product support as well.

Today, you may find twitter account for most JetBrains products:
These accounts a pretty new, but in the long run you'll find a lot of interesting stuff in these feeds, I'm sure.
So follow to stay tuned!

Update: dotTrace account has been created as well :)

Labels: ,

Sunday, November 30, 2008

TeamCity 4.0 runs Checkvist's tests

I'm working on two projects: TeamCity - a rather popular continuous integration and build management server, and Checkvist - a simple and fast online outliner with task sharing and keyboard navigation.

I use Checkvist to plan my work on TeamCity, and recently I got a chance to use TeamCity to assist Checkvist development.

TeamCity recently reached its next milestone - 4.0 release. One of the interesting things it has is Rake build runner (so it can test Ruby and Rails projects).

You know, software must be tested before the release. So I tested this runner by creating a Checkvist build configuration in TeamCity. It happened to work so nice, that I couldn't resist to prepare a short and dirty demo

Definetely, I had to break some Checklist tests to demonstrate some cool TeamCity features :)




Labels: , , , , , ,

Saturday, January 12, 2008

TeamCity: immediate test failure notifications

This feature is particularly useful, if you have lengthy builds.

With most continuous integration tools, one have to wait until build is finished to get notified about test failure. TeamCity can send notification right after test failure, before build completion.

Scenario

  • Developer commits a change
  • Build is started
  • A test fails
    • Notification "Build is failing" is sent to the developer and to other subscribers via configured notifiers
    • Test failure details immediately appear in the Web UI
    • Clickable stacktrace on the Web page allows to open the test and the stacktrace in IDE
    • Developer can see if this test failed in the previous build


  • If the fix is simple, developer commits the fix even before original build has finished.
  • Optionally, developer may stop the original build to free the build agent.
  • Otherwise the original build finishes (possibly with other test failures).
  • TeamCity sends notification about build completion and its results.
According to this scenario, it may take a little time between problem detection and the fix, and the same little time the broken code will stay in the version control system. And this is a Good Thing, and I like this.

You can read more about this and other features on the official TeamCity site.

Good builds in new year,

KIR

BTW, in the previous post I described how to avoid broken code in version control at all.

Labels:

Thursday, March 01, 2007

How EAP works

I'm really excited how TeamCity EAP program works. Using our discussion forum, people report bug, problems, enhancements, features, ask for and got real help. We're trying hard to answer all questions and requests, and though it takes noticeable time, it's worth doing it.

One small example.

Some time ago we got a message from Jacques Morel regarding support for third-party reporting tools in TeamCity. After some discussion with Dave Griffith and Tim McNerney it turned into an interesting feature - custom reporting tab for any third-party reporting tool, which provides report in web-enabled format (e.g. html, text, image etc). Such a tab can be configured with just one line of xml, which describes title of the tab and content location in the artifacts directory of the corresponding build.
So it was implemented; we've migrated our EMMA coverage support to this approach, and released a EAP with this feature.

You may see how this feature works for Etienne Studer
Try it yourself in our latest EAP - I hope you'll like it :)

Another exciting feature of TeamCity, which is already available in the EAP - Eclipse plugin with personal builds, own changes view and build status information.

And if you want more features, or have any suggestions about the implemented ones - we'll be glad to get your feedback in our EAP.


Technorati:

Labels:

Wednesday, January 31, 2007

Agra: popups everywhere

Just a couple of screenshots from the latest EAP of TeamCity.
Quick access to artifacts:


Quick access to the list of failed tests:




Labels:

Tuesday, November 21, 2006

Release woes

Shit happens. You've prepared final release build, marked it as 1.1 and put on the site. Next day a couple of people from your company comes - they found an unnoticed critical bug. Because of strange consequence of events this bug wasn't noticed before.

Bug is fixed, new 1.1.1 build is uploaded to the main site, build number is corrected.
Next day you got an e-mail from support with message "whether 1.1.1 was really released?". Because of strange consequence of events the download path on the site still points to TeamCity 1.1. As long as all announces were already published, you wonder how many users downloaded the non-updated version. Sigh.

TeamCity announce on dzone.org was published under the title "IntelliJ IDEA 6.0.2 released". Cool.

Ups. Your latest fix for 1.1.1 introduced another critical bug - code coverage information from TeamCity cannot be viewed in IDEA. Looks like we really have plans for TeamCity 1.1.2.

But TeamCity's roadmap will be a subject of the next post. 

Labels:

Tuesday, June 20, 2006

Safari JavaScript problems

Today I spent several hours fixing various bugs in Team Server for another EAP release, and two of them concerned Javascript issues in the Safari browser.

The first issue:
In Safari you cannot specify the location of an absolutely positioned element if this element has display:none. I had a code which set style.left and style.top of a hidden div and then showed it on the screen. It worked fine in every browser except Safari. To make it work, I had to assign display:block to the div first, and then assign coordinates.

The second issue - how to add a mouse document listener.
Again, code like Event.observe(document.body, "mousedown", handler) worked out in every browser. Except Safari. In Safari one has to use 'useCapture' option when adding the event handler, i.e. use Event.observe(document.body, "mousedown", handler, true).

I tried to google for the solution of my problems with Safari, but failed. Hence this post. Hope this saves someone's time and headache :)


Technorati:

Labels:

Sunday, April 16, 2006

Team Server: Remote Run functionality

To be honest, I didn't believe that this feature will be implemented in the first version of the Team Server.

But now it is real - with the latest EAP of Demetra and Team Server a developer can integrate and run build with own changes without commiting them to version control system!

The implementation is not perfect - but it works and surely will be improved. On the forum you can read how to setup remote run and discuss this feature as well as its successor - Deferred Commit.


Technorati:

Labels:

Thursday, December 29, 2005

BuildServer: Queue reordering

The build queue of the BuildServer, which serves IDEA project, was rather long until we've set up 10 build agents for it. But before that, the queue was long enough to add some management operations for it, like move build up/down and remove build from the queue.

So, each build in the queue had links "move up", "move down" and "remove". Guess, how many mouse clicks were needed to move build from the tail of the queue to the first position when there are 5 builds in the queue? Too many anyway. After the first attempt to do such a trick it became obvious that the "up/down" solution was wrong.

The first simple modification I intended to make was to add "Move to the top" link and remove "up/down" ones. That would remove some flexibility but save the screen space and make the interface more use-case-oriented. But Sashka convinced me that Drag-n-Drop is much more flexible solution in this situation. It took one day to implement it, including update of the queue on the server after reordering (thanks to scriptaculos again).

There was a couple of diffuculties, because Drag-n-Drop support cannot be safely done for table rows, so I had to convert rows to the list of div's. But anyway, now it works and you can see the result on the following screenshot (in the middle of DnD operation in my test environment).


There are still some areas for improvement, like adding a visual hint that D-n-D operation is possible and removing duplicates for "Remove" link.

Labels:

Saturday, December 10, 2005

Build Server: Web

Dmitry Jemerov made a very good overview of what kept me busy for the last couple of weeks.

The initial Web-interface of the Build Server was ugly and hardly usable, and the current version looks and works much better.

Sashka had created an accurate sketch for the build status overview interface, and described its behaviour. I just had to make it real. Thanks to prototype library, AJAX updates were implemented mostly painless. But is was much harder with visual effects (in fact, I spent a couple of days trying to expand/collapse a table row in IE using aculos. I solved the problem by patching prototype.js).

And what with IDEtalk? Well, I'd love to work on it but Build Server currently has higher priority. I've made several Jabber-related fixes, sending code pointers for library sources, and viewing a diff between local and remote version of arbitrary project file.

If you happen to visit JavaPolis next week, Max Shafirov and Mike Aizatsky will give you an overview of the forthcoming Demetra and Build Server features, answer your questions and even give you a chance to win one of 20 free IDEA licences.

Labels: