Author Archive

TeamCity 7.1.5 is finally available

Wednesday, April 17th, 2013

It took us more than 2 months to prepare one more bugfix release. Most of the team are busy working on TeamCity 8.0 but bugfixing is definitely never ending story :) So here is one more bugfix release in 7.1.x branch: 7.1.5 build #24400. As usual there are a lot of bug fixes and several performance improvements. If you’re using 7.1.x version we recommend to upgrade your server to 7.1.5.

Release notes
Download page

BTW, expect new 8.0 EAP build in a few days with some interesting features!

Happy building!

TeamCity 7.1.4 (build 24331) is ready

Thursday, February 7th, 2013

While we’re working on TeamCity 8.0 we do not forget to fix bugs in TeamCity 7.1 too. So here comes another bugfix release: 7.1.4. It has about 70 fixes and improvements and is recommended for upgrade to everyone.

It is worth to mention that with this release TeamCity should work correctly with tfspreview.com. The long standing issue with Perforce jobs lost during pre-tested commit in Visual Studio add-in has been fixed too (TW-11196). Finally there were a couple of performance improvements and a bunch of other fixes.

Release notes
Download page

Happy building!

TeamCity 8.0 (code name Gaya) EAP is open

Friday, January 25th, 2013

Hello everyone! Today we’re opening EAP for TeamCity 8.0 (code name Gaya) in order to give you some fresh stuff, to play with during weekend. ;)

Let me briefly describe what we’ve done already and share some of our plans for TeamCity 8.0 (we expect it to be released in Spring 2013).

The major feature of TeamCity 8.0 is sub projects, or project groups (see TW-705, yes, a rather old and rather popular request). We hope it will make TeamCity more scalable in terms of information presentation and the notion of project in TeamCity will become a better match to a real life project (what we call a project right now is rather a VCS branch). While moving in this direction in this EAP we’ve changed how project configuration files are stored on the disk and introduced “root project” (a parent for all of the projects in the system), read more.

Another important feature which we’d like to address in 8.0 is import/export of projects and build configurations (TW-4124). It can become really handy for those who have to maintain several TeamCity instances. At first we plan to provide editable IDs for a project, build configuration, template and VCS root. This will allow assigning IDs on one server so that they do not intersect with IDs on another one, thus will simplify moving configuration files among servers. In this EAP we’ve made the first step in this direction — editable project IDs.

We’ve heard complaints from our customers about the cleanup process. Highly loaded TeamCity server can produce thousands of builds and gigabytes of data each day. Not all of this data will be used in the future, and there is an ability to configure cleanup rules to remove garbage from disks and from the database. Unfortunately, not only this operation takes significant time but web interface becomes inaccessible while the cleanup is in progress. In this EAP we’ve made several improvements in this area, read more and let us know how it works for you.

Mixed mode authentication is the last important addition in the first TeamCity 8.0 EAP. It simplifies migration from one authentication scheme to another by allowing usage of more than one authentication module at a time, read more.

There is also a couple of IDE integration features (currently only available in IntelliJ IDEA plugin). These are: already mentioned some time ago remote debug on agent and showing of test status (success, fail, muted, investigated) right in the editor, plus some other smaller improvements.

Please see release notes for complete list of changes.
Download EAP build, and share your feedback with us.

Happy building!

TeamCity 7.1.3 (build 24266) is available

Thursday, December 13th, 2012

A month ago we released TeamCity 7.1.2 and now we are ready to announce one more bugfix update – 7.1.3. In this release we’ve fixed more than 90 different issues. Some of them were performance related, so if you still experience performance or memory-related problems please upgrade.

Most likely this will be the the last bugfix release for this year and soon we’re going to open TeamCity 8.0 EAP. Enjoy using TeamCity, share your feedback with us and stay tuned!

Release notes
Download page

Happy building!

TeamHackCity: What a bunch of TeamCity Developers got up to in 2 weeks

Monday, December 10th, 2012

In September, after having released TeamCity 7.1 and before getting to discussing the plans for version 8.0 we took a pause and organized an internal TeamCity plugin contest for TeamCity team only. A two-week hackathon where all TeamCity developers could write anything TeamCity-related, try ideas they had in mind for a long time but were not able to spend time on them. It was not the first time we do such a contest in the team and we expected to see some really interesting ideas. Without a doubt, I can say that the results exceeded our expectations, in terms of quality of ideas and implementation. So let’s see what we were able to create during these two weeks of coding.

Remote Debugging of Tests on Agent

The idea was to simplify the process of remote debugging of tests running on an agent. First of all, it would be great to avoid changing any configuration settings, JVM arguments, etc., and start remote debug right from the IDE. Also it would be useful to have a quick restart of the debug session without waiting for the start of the next build (how often during a debug session we realize that we missed some stage and it is already too late?).

As a result of these thoughts an experimental feature emerged in TeamCity trunk (future version 8.0). It let’s you start debug session right from IntelliJ IDEA for the builds based on IntelliJ IDEA project build steps. Other build types are not supported now.

Here are some screenshots to demonstrate how it works.

Start a remote debug pretty much the same way you start a local debug session:

Select a build configuration where to start your build:

Debugging:

Debug finished, but we can restart it if we want:

Hope this gives you an idea of this feature. You’ll see it in the first EAP build of TeamCity 8.0 which should be available in a few weeks.

Author: Maxim Manuylov
Availability: the first TeamCity 8.0 EAP build.

Flaky Tests Analyzer

A “flaky test” is a one which fails and passes at seemingly random order. There can be some concurrency issues, or the test can be environment sensitive and its failures seem random because it starts on different agents. So the purpose of this plugin is to identify flaky tests in a project and then analyze their failures and detect cases when a test is environment specific. To identify a flaky test a number of heuristics can be used. For example, if a test failed in a build without changes, and it did not fail before, it is clear that the test is suspicious — either flaky or environment specific.

This plugin adds “Tests analysis” tab on the project page. Here is a screenshot to give you an idea:

In this specific case the analyzer diagnosed a test as flaky because it failed in a build without changes. It has also determined that the test fails on two agents only and only in one configuration, which runs tests against Oracle database. Not so bad for a start.

If you want to try this plugin, see how to install it in this comment.

Author: Maxim Podkolzine
Compatibility: TeamCity 7.1.x and newer.
Source code: link

VCS Users Sync

In order to start receiving notifications from TeamCity, user account needs to be created on the server. Wouldn’t it be great if a committer to some repository received a notification about build failure even if he/she does not have a TeamCity account or does not even know about the build server existence? So here comes another plugin — VCS users sync. It watches for VCS changes detected in TeamCity and creates a user account on TeamCity server. If committer username contains email (which is often the case for Git or Mercurial), this email will be set into the user profile. To match TeamCity user account to username in version control, plugin automatically configures VCS usernames for the user account. Then, once a build fails, user will receive a notification from the TeamCity server, although he/she might never seen the server before.

Author: Yegor Yarko
Compatibility: TeamCity 7.1.x and newer.
Source code: link

Artifacts Torrent Tracker

Some time ago we discussed how we could speedup downloading of artifacts from the TeamCity server, especially for the cases when the server is used from different locations (like at JetBrains). The slow artifact downloads is an often pain for our customers. So we discussed different approaches, like mirroring of some artifacts to different hosts located near the user who wants to download them, and came up with the idea to use BitTorrent protocol for this task. Let me explain it a bit in case you’re not familiar with BitTorrent.

With BitTorrent protocol there must be a tracker whose main purpose is to be a mediator between clients (peers) downloading and sharing some content. If a client has some file (such clients are called seeders) and wants to share it, it connects to the tracker and tells tracker some meta information (hash of the file, name, own IP, and other details). Then if another client wants to download file it comes to the same tracker and tells it the hash of the file it wants to download (such client is called leech). The tracker tells the leech addresses of all of the seeders, then leech connects directly to the seeder(s) and downloads the file. When the file is downloaded this leech becomes a seeder because it now also has a file to share. The meta information about the file as well as the address of the tracker is stored inside a special .torrent file. All of the parties like seeders, leechers and tracker must know about the torrent file to be able to share the content.

So we wrote a Artifacts mirror plugin which turns TeamCity into a torrent tracker for all the published artifacts. When an artifact is published, TeamCity creates a .torrent file and starts tracking all the seeders and leechers with this .torrent. But it would not make much sense to stop here, as we also need seeders to make the whole thing work efficiently. So not only TeamCity works as a torrent tracker, it also starts seeding all the artifacts with .torrent files. So now, when you open .torrent file downloaded from the TeamCity server in your BitTorrent client you’ll always see at least one seeder – TeamCity server.

Soon we realized that to speedup download we need more seeders. But who else could be a seeder for an artifact? The agent that produced it of course! So we turned agents to seeders for the artifacts they published and it brought the download speed to a comfortable level. If many users download same artifacts they quickly become seeders themselves and this improves download speed dramatically, and as a side effect lowers the TeamCity server load. Good news is that the plugin is compatible with TeamCity 7.1.2, so nothing should prevent you from trying it right away!

Authors:Pavel Sher, Maxim Podkolzine, Viktoriia Petrenko
Compatibility: TeamCity 7.1.2 and newer.
Source code: link

Deployer Plugin

The next one is Deployer plugin aimed to simplify publishing of artifacts from TeamCity agent to various places, like FTP, SMB share, Tomcat, SSH. Once installed the plugin adds several special types of build steps for different deployment targets.

This plugin should greatly simplify this tedious work of writing your own deployment tasks or scripts and it is compatible with the current TeamCity version – 7.1.x, so you can easily install it and try.

Author: Nikita Skvortsov
Compatibility: TeamCity 7.1.x and newer.
Source code: link

URL Build Trigger

URL build trigger plugin was already available for quite some time. It automatically adds new build to the build queue when the content returned by a specified URL changes. During the contest a number of issues was fixed in it. In particular it now supports ETag header. If you’re using this plugin consider upgrading to a newer version.

Author: Viktoriia Petrenko
Compatibility: TeamCity 6.0.x+
Source code: link

TeamCity Data Directory Browser

This feature is quite simple and will be bundled with TeamCity 8.0. It allows system administrator to browse files under the TeamCity data directory and edit them right from the web interface. It can be useful for modifying different settings that do not have user interface in the TeamCity.

Author: Maxim Podkolzine
Availability: TeamCity 8.0

That’s it! And your feedback is welcome!

Of course two weeks is not too much time for every idea to become something usable or even prove its validity. Among other things we also tried to implement a matrix builds feature, played with Gerrit code review system to try some things like displaying build status inside Gerrit interface, auto merging of commits on server based on builds status, and others. We hope that some of these ideas eventually materialize in one of the future versions of TeamCity.

Having tried writing plugins for TeamCity we’ve identified some pain-points that TeamCity plugin writers have: lack of documentation with samples and template projects often makes it difficult to start. So, expect to see improvements in this area in the nearest future.

As to the mentioned features and plugins, their future depends heavily on your feedback. If you decide to try some of these plugins and features, please do not hesitate to contact us with your thoughts. Whether you like them or not, your feedback is very much appreciated.

BTW, most of these plugins are open source, so contributions are welcome too!

Happy building!

TeamCity 7.1.2 (build 24170) is available

Monday, November 12th, 2012

It took us more than a month to prepare another bugfix release. TeamCity 7.1.2 contains > 100 fixes and some of them are rather important.

We fixed several performance issues, compatibility with Perforce 2012.2, a couple of bugs with builds sitting in the build queue and not starting. We also added compatibility fixes for NuGet 2.0 and support for new Amazon EC2 instances. We strongly recommend everyone to upgrade to this version.

If you’re using GroovyPlug please install new version of this plugin, see TW-23898 for details. Please follow GroovyPlug installation instructions.

TeamCity 7.1.2 is a bugfix release and as such it does not modify data structure. It should be easy to install and easy to revert to previous 7.1.x version in case of any problems.

Release notes
Download page

Enjoy using TeamCity and share your feedback with us.

Happy building!

Easy Open Source Licenses Management using TeamCity

Tuesday, November 6th, 2012

TeamCity has a constantly growing number of integrations. Some of them are quite interesting. One such recent integration is provided by our technical partner — White Source Software.

Almost all software projects these days use open source libraries. However the fact that a library has its code “open sourced” does not automatically mean you can use it in your software. Unfortunately, not all libraries have commercial-friendly licenses, not all libraries can be distributed as a part of commercial software, etc.

The unique solution provided by White Source Software addresses this problem. It helps companies to define and enforce open source library policies in their software and monitor these policies continuously. With their integration with TeamCity, White Source has the ability to fail and approve builds based on policies.

The setup is pretty easy:

And here is the juicy part regarding Policy enforcement:

For more information visit
http://www.whitesourcesoftware.com and
http://www.whitesourcesoftware.com/TeamCity_Integration.

TeamCity 7.1.1 is available

Friday, September 21st, 2012

More than a month passed since we released TeamCity 7.1. Since then the team worked hard and fixed a lot of issues and usability problems. And now the first bugfix update for version 7.1 is available for download.

As always enjoy using TeamCity and do not forget to share your feedback with us.

Happy building!

TeamCity 7.0.3

Tuesday, May 15th, 2012

TeamCity 7.0.3 (build 21424) is ready for download!

This bug-fix has a bunch of major issues fixed and is recommended for upgrade to anyone. Please refer to release notes for the list.

Among fixes there were important performance improvements, especially for those who uses parametrized VCS roots and snapshot dependencies. Some other sporadic performance problems were fixed as well. Note that if you experience slowness on your server and if you’re using GroovyPlug we strongly recommend to install fresh version of this plugin, you can download it from here.

This bug fix release does not change data format under TeamCity data directory, and in case of any problem you can always revert to previous version.

Download the build and share your feedback with us.

Happy building!

TeamCIty 6.5.4 bugfix update

Tuesday, September 20th, 2011

We are ready to announce TeamCity 6.5.4 with another set of bugfixes. If you are using TeamCity 6.5.x we recommend to upgrade to this version as it contains more than 60 fixed issues and some of them are rather critical.

Download the build and share your feedback with us.

Happy building!