TeamCity evolution in the past 5 years

Dear TeamCity users!

Every new TeamCity release brings lots of changes, and oftentimes we are not sure how successful they will be, or they might seem minor at the time. This is especially noticeable if we come across an old TeamCity version and, looking back, we realize how accustomed we are to many of the features that once were a novelty. So today we decided to review the evolution of our CI server and remind you of the most significant features brought to you by the releases in the past 5 years.

Now we easily create projects in TeamCity by simply giving it a URL – the feature is barely a year old, it came with TeamCity 8.1 in February of 2014:

When you look at the internal JetBrains TeamCity server with over 300 nicely arranged projects, it’s hard to imagine now that less than two years ago, TeamCity had no projects hierarchy, introduced in version 8.0 in June, 2013:

Version 7.1 came with support of feature branches for Git & Mercurial, which was a huge success with our users. This feature is also used by our internal JetBrains teams so extensively, that it is not clear how we were able to release at all BFBS (before feature branches support):

Build failure conditions, as well as NuGet support were introduced in TeamCity 7.0 in February of 2012! But more astonishing is the fact that this was the time when Agent Pools were introduced for the first time – with over 200 agents and more than 20 agent pools on the TeamCity server here at JetBrains, we see how efficiently our resources are allocated thanks to this feature:

TeamCity 6.5 made all features of the Enterprise Edition available in the free Professional Edition allowing unlimited number of users.

Multiple build steps – an indispensable feature today! – were announced almost 4 years ago, on December 1, 2010 when TeamCity 6.0 was released.

And finally, already 5 years ago, TeamCity 5.0 saw the light with cloud Build Agents on Amazon EC2 and issue trackers integration, which at present are unnoticed, as they are convenient and used every day!

We hope that you enjoyed our short history course. If you come to think of it, it’s pretty amazing actually how much our features have evolved, not to mention the user interface, which is way prettier now!

We would like to thank all of our you, our long-term users and supporters as well as newbies for your dedication to TeamCity! The new version is on its way, and we do hope that it will bring more cool features worth trying and remembering, so don’t miss TeamCity 9.0!

Stay tuned and happy building!

Posted in Blogroll, Design decisions, FYI, Uncategorized | Comments Off

TeamCity 9.0 RC is out

Hello everyone!

Winter has finally settled with cold and snow, and our code is frozen too to let us apply the final polishing touches before TeamCity 9.0 release.

We’ve been working our fingers to the bone, and today we are announcing the TeamCity 9.0 Release Candidate containing over 140 bugfixes since the previous EAP! We’ve made some improvements to our project import, REST API, and audit – for the complete list, please see our Release Notes!

Download the TeamCity 9.0 RC build today to keep you busy over the weekend! We can’t wait to see how this build works out for you in the end, so please share your feedback!

TeamCity 9.0 release build is on its way!

Stay tuned and happy building!

Posted in Bugfix, EAP, FYI, News & Events, Uncategorized | Comments Off

TeamCity VMware vSphere plugin

TeamCity always aims at giving your team more build power, and for those of you taking advantage of local cloud capabilities with VMware vSphere, the new TeamCity VMware vSphere plugin will surely be an asset. With this plugin, TeamCity can start and stop TeamCity agents installed on VMware virtual machines on demand, similarly to integrations with Amazon EC2 and Azure .

TeamCity-VMware cloud agent integration requires:

  • the TeamCity VMware vSphere Cloud plugin (compatible with TeamCity 8.1+) installed on the TeamCity server;
  • a configured virtual machine with an installed TeamCity agent in your cloud set up to start the TeamCity agent on boot,
  • a configured cloud profile on the TeamCity server.

Let’s go step-by-step and set up the integration.

Install the plugin and configure the virtual machine

Since the plugin is not bundled with TeamCity, we need to install it on the TeamCity server. Next we need to create a virtual machine where our builds will run.

The virtual machine with the TeamCity agent needs to be prepared as described in our documentation; when configuring the TeamCity build agent, be sure to specify the valid TeamCity server URL in the build agent properties.

After you start the build agent, it connects to the server, and you need to authorize it in the TeamCity Web UI so that the builds can run on the agent. Please ensure that the agent that connected to the server can actually run the builds you want it to run later.

When configuration and testing is complete, power off the virtual machine. If we want TeamCity to clone this virtual machine for us, we need to create a snapshot of this virtual machine.

You can also use the machine you created to make a template, see more information in the VMware vSphere documentation.

Configure the TeamCity VMware profile

Next we need to create an agent cloud profile in TeamCity on the Administration | Agent Cloud page selecting VMware vSphere as the cloud type.

A profile name is required; it is also recommended to configure the Terminate Instance Idle Time setting which will save you the resources: it specifies the period of time for the virtual machine to run without builds after which TeamCity will stop it. You also need to provide the cloud access information, including the vCenter SDK URL and your user credentials.

You can verify your credentials using the Test connection / Fetch options button, which also refreshes the information on the virtual machines, snapshots and resources available in your cloud.
Now we can add images and specify the virtual machines or templates we want TeamCity to use.

The VMware vSphere plugin can either start and stop an existing virtual machine, or clone virtual machines from snapshots deleting the clone after the machine is stopped. For templates only the clone behavior is supported.

Click Add Images and select the virtual machine and the desired behavior. For the clone behavior, select the snapshot to use, the folder for clones and the resource pool where your machine will be allocated. The maximum number of instances will limit the clones created.

In this test set up we are using the clone behavior with 2 being the maximum number of instances: TeamCity will clone a machine from the specified snapshot and will delete the cloned machine after it is stopped:

When the images are added and the profile is saved, a clone is created from the snapshot. It connects to TeamCity and TeamCity processes build configurations-to-agents compatibility.

As with all cloud integrations, you can view and manually start/stop the cloud agents on the dedicated Agents| Cloud page in the Teamcity Web UI:


Our integration is configured. Now when distributing queued builds, TeamCity will start a compatible agent in vSphere if required.

The agent will be authorized automatically and will start running builds. The Agents page will display the builds running on the cloned machines:


Try the plugin and don’t hesitate to share your feedback with us!

Happy building!

Posted in Blogroll, EAP, Features, FYI, How-To's, News & Events, Tips&Tricks | 6 Comments

Welcome TeamCity EAP4 Build 31693

Dear TeamCity users,

Time flies and we are pleased to announce the new TeamCity EAP4 build 31693. This release contains further improvements in projects import and over 100 bug fixes!

This is the last EAP for TeamCity 9.0, chances are we’ll publish the 9.0 RC build in a week or so. Please see our release notes and download this build to try out the improved TeamCity features!

We invite you to share your feedback with us!
Stay tuned for the news on the Teamcity 9.0 RC and happy building!

Posted in Blogroll, Bugfix, Design decisions, EAP, FYI, Tips&Tricks | 2 Comments

Improving Software Development through Automation with TeamCity – 2 Day Workshop in NYC, December 8-9


If you want a jump start improving software development with automation, consider this workshop with Wes Higbee in New York, NY. This two day workshop will provide hands on examples and the opportunity to apply the techniques to your own software projects.

There are many more details on the workshop Eventbrite page including details about what’s in it for you, the agenda, links to videos and sample materials.

Sign up before November 25th and get 10% off individual tickets and team passes. If you own TeamCity you are eligible for a separate discount on individual tickets and team passes. Please contact Wes from the Eventbrite page.

To learn more and register for this workshop visit the official page, Improving Software Development through Automation with TeamCity.

Posted in News & Events, Partner | Tagged , , | Comments Off

Send Visual Studio Online Team Room Notifications from TeamCity

Continuous Integration is all about quick feedback on changes in our code. TeamCity lets us subscribe to important events that may take place during the build process, such as succesful builds, build failures and so on. Email, Jabber, IDE and Windows Tray notifications are supported out of the box, but we can also post these notifications to Visual Studio Online Team Rooms using a newly released plugin.

VSO notification

With Visual Studio Online Team Rooms, we can keep a record of things that happen in our team – checkins, work item updates, code reviews and so on. Team members can have conversations with each other directly in the team room. TeamCity can contribute to the conversation, by posting notifications around builds to the team room. Let’s see how we can configure this integration.

Enabling and Configuring Team Room Notifications

After installing the plugin, we have to enable the integration from the Administration | Server Administration | VS Online Notifier page. Once done, we can configure notifications from within a user profile. In the top right corner of the screen, we can click the arrow next to our username and select My Settings & Tools from the drop-down. We can then setup notifications under the VS Online Notifier tab.

Setup Visual Studio Online Team Room notifications

Team Room notifications will be sent by the user profile we configure here. We’ll have to provide the Visual Studio Online account name, the full Team Room name and a username and password to connect to it. Do make sure to enable alternate credentials in Visual Studio Online to be able to send notifications on behalf of this user.

Once the connection has been tested and saved, we can tell TeamCity which notifications we want to see for one or more build configurations. Check the documentation for a list of the available notification options and how to work with them.

Add new Rule

After saving the rule, TeamCity will send notifications to the configured Visual Studio Online Team Room as events happen.

TeamCity posts message to VSO team room

Every TeamCity user can configure these notifications. In the above screenshot, we’ve created a special “TeamCity user” in Visual Studio Online. It’s perfectly possible to send notifications from other users, too. When multiple users have configured the same events, TeamCity will merge these messages in one so the Team Room is not flooded with the same information.

We can add more information to the notifications if needed, by customizing notification templates. For example, we can add the error messages from the build log or add additional build details in the notification.

Happy building!

Posted in Features, Tips&Tricks | Tagged , , , | 3 Comments

Integrating TeamCity and Visual Studio Online Work Items

Continuous Integration only makes sense if there’s an easy way to verify the quality of our codebase and when we can easily correlate builds with our issue tracker and the source code itself. Out of he box, TeamCity provides integration with YouTrack, JIRA and Bugzilla. We can also install plugins to integrate with other issue trackers like GitHub and FogBugz. Today, we’re happy to announce another issue tracker integration: the Visual Studio Online Work Items plugin.

We’ve already blogged about how we can link Visual Studio Online source control with TeamCity and run our builds.When using Visual Studio Online (VSO) as an issue tracking system as well, we can use the Work Items plugin to provide a direct link between the build and version control history in TeamCity and the Work Items that were associated with them.

Work Item integration with TeamCity

How does it work?

After installing and configuring the Visual Studio Online Work Item plugin, TeamCity will parse version control check-in messages and transforms the Work Item ID into a link that brings us to the full work item. A direct link will be available on the Changes tab of our build results. The Issues tab will show us a list of all Work Items that are associated with the build. And in the build configuration home page, we can also review Work Items mapped to comments from the Issue Log tab.

Work Item link in Changes

The plugin does not look at the Work Item Association, but instead uses the check-in message to provide these links. This has a big advantage: it works with both Team Foundation Version Control (TFVC)-based projects as well as the increasingly popular Git-based projects. This does mean we have to keep two things in mind:

  • When checking-in changes, always mention the related Work Item ID in the check-in comments.
  • On the Issue Log tab of a build, we can tick the Show only resolved issues option to only display issues that were fixed in the build. This does mean we have to resolve Work Items when they are fixed.

How to configure it?

To enable integration, we need to first install the Visual Studio Work Items plugin. Next, we have to create a connection to our Visual Studio Online project from the Administration | Issue Tracker page. After selecting the Visual Studio Online connection type, we have to provide a display name, our Visual Studio Account name, and a username and password to connect to it. Do make sure to enable alternate credentials in Visual Studio Online!

We also have to provide the collection, the project name and the issue pattern to detect. The default is #(\d+), which will recognize Work Item IDs that look like #10, #99 and so on. We can customize this so we can detect other patterns. The Test Connection button lets us verify all connection details are correct.

Visual Studio Online configuration

Once saved, TeamCity starts to match each Work Item ID it recognizes in the project’s check-in history.

Happy building!

Posted in Features, Tips&Tricks | Tagged , , , | 4 Comments

TeamCity 9.0 EAP3 comes with project import, favorite builds and more!

Hello, our dear readers! Have we got the most exciting news for you! Although it feels like we just announced opening the TeamCity 9.0. EAP, it’s almost time for the release and we are presenting TeamCity 9.0 EAP3 build 31886 today!

We promised you the ability to move projects among servers as one of the great new features of TeamCity 9.0, and in this EAP you get the feel of what it’s eventually going to be. We were contemplating on different implementation approaches, and initially considered to add the ability to export projects from a TeamCity server, but then we realized that we already have what we need in a regular backup file, so we switched to project import! Now all you need to do is create a backup file on the source server and then select projects you want to import on the target server. Read more in our Release notes.

Another useful feature of this release is favorite builds – you can now star your favorite builds and they will be listed on a dedicated page. Optionally, you can also configure notifications for your favorites.

The TeamCity web UI is getting more and more user-friendly: now you can create and modify custom charts right from the UI.

Those of you who use meta-runners will love the new option to create a build configuration from a Meta-Runner, which makes it easier to fix problems in the Meta-Runner and verify the fixes.

Among other features is the ability to compress artifacts to a 7-zip archive, new options for Perforce VCS roots, the ability to push parameters to dependent builds when using snapshot dependencies, etc.; these and about 150 fixed issues are listed in our Release notes.

Download the newest TeamCity build and give it a test-drive now! We are anxious to hear your feedback - help us to make TeamCity better!

Happy building!

Posted in Blogroll, EAP, Features, FYI, How-To's, News & Events, Tips&Tricks | 2 Comments

TeamCity integrates with Visual Studio Online and Azure – Special offer for MSDN subscribers

teamcity-visual-studio-online-vsoA large number of TeamCity users are working with Microsoft technologies and platforms such as Visual Studio Online and Azure, both fantastic tools in their respective areas. We are really excited to announce several new integration points between TeamCity and these tools!

Special TeamCity Offer for MSDN Subscribers

Today we are launching a special offer in partnership with Microsoft. All MSDN subscribers are eligible for a 50% discount on new TeamCity Enterprise licenses. Visit the MSDN special offers page to see the details and apply for the discount.

This is the first time TeamCity offers such a bargain for its commercial licenses. If you were planning on upgrading to Enterprise, this is definitely the right time to do it!

Building from Visual Studio Online Source Control

Visual Studio Online provides excellent source control, with support for Team Foundation Version Control and Git. TeamCity supports building projects that are hosted on Visual Studio Online and provides a powerful and comprehensive continuous integration story because of its advanced features to automatically run builds for feature branches,  automatic merge and many others.  Read more in the dedicated blog post on TeamCity and VSO source control.

Work Item Integration

Continuous integration becomes more powerful when we have full traceability from source control to builds to issue tracking and vice-versa. The Visual Studio Online Work Items plugin gives us a direct link between the build and version control history in TeamCity and the Work Items that were associated with them.

Work Item integration with TeamCity

Team Room Notifications

Quick feedback on changes and communication are the corner stones of agile teams. Visual Studio Online users can collaborate in a Team Room and discuss what is going on in the project. With the Visual Studio Online Team Rooms plugin for TeamCity, the build server becomes a member of our team by posting notifications around builds to the team room.

VSO notification

Elastic Cloud Build Agents on Azure

Very often it is difficult to predict the load on build agents, for example during releases. One minute we need only one or two build agents, the next minute we have 50 builds queued up. Using the elastic nature of cloud platforms like Microsoft Azure, we can scale out our build farm when needed. The TeamCity Azure plugin provisions and deprovisions virtual machines when needed, perfectly aligning capacity demand of our build farm with its running cost.

If you’re using or planning to use Visual Studio Online together with TeamCity, give these plugins a try! They provide great interoperability between both products, providing a best-of-breed solution for development teams. Keep an eye on this blog, as we’ll be writing more about these integrations in the coming days.

And remember: all MSDN subscribers are eligible for a 50% discount on new TeamCity Enterprise licenses. Visit the MSDN special offers page to see the details and apply for the discount.

Happy building!

Posted in Features, News & Events, Partner | Tagged , , , , | 3 Comments

Introducing TeamCity Azure plugin – Run builds in the cloud

Microsoft AzureIn a large TeamCity setup with many projects, it’s often very difficult to predict the load on build agents, for example during releases. One minute we need only one agent to be running, the next minute we need 50. Not to worry! TeamCity supports scaling out builds to Amazon EC2, and starting today, also Microsoft Azure!

For each queued build, TeamCity first tries to start it on one of the regular, non-cloud agents. If there are no regular agents available, TeamCity finds a virtual machine or virtual machine image with a compatible agent and starts it on Azure. TeamCity ensures that the configured maximum number of instances is never exceeded. Let’s have a look at how we can get started with a Windows or Linux build agent farm on Microsoft’s cloud platform.

Installing the TeamCity Azure plugin

First things first, of course. The TeamCity Azure plugin is not bundled and therefore has to be installed on our TeamCity server. It is compatible with TeamCity 8.1 and the EAP of TeamCity 9. Shutdown the TeamCity server, download the latest version of the plugin from our build server and copy the downloaded zip archive to the <TeamCity Data Directory>/plugins directory. Next, start the TeamCity server again and verify the plugin was loaded correctly from the Administration | Plugins List page.

Plugins List

Once that’s done, we can get started with creating a virtual machine or virtual machine image for our build farm.

Preparing a Virtual Machine (Image) with TeamCity Agent

We’ll need to create a virtual machine (image) on which our builds will run. In short, we need to create a Windows or Linux virtual machine:

  • on which all build prerequisites are installed (e.g. Java, .NET, Visual Studio SDK’s, …).
    Tip: When you plan on testing this plugin for .NET builds and have an MSDN-enabled Azure subscription, this is a step that can be quickly done by creating a virtual machine from a readily-available Visual Studio image.
    Visual Studio MSDN image on Azure
  • on which a TeamCity build agent is installed and configured.
  • on which we’ve opened port 9090 (or a port range in case we want to have TeamCity create virtual machines for us) in the operating system firewall and as an endpoint on the Azure load balancer. This is required to enable two-way communication between TeamCity server and the agent.
  • with which we have tested the connection between the TeamCity server and the build agent.

If we want TeamCity to create virtual machines for us, we will also have to create a generalized image of he virtual machine we’ve just created. Check the full documentation for a detailed list of steps involved in creating a build agent virtual machine (image).

Configure the TeamCity Azure plugin

Once we have the plugin installed and have a virtual machine (image) our builds can run on, we can configure the TeamCity Azure plugin. From the TeamCity | Administration | Server Administration | Agent Cloud page, we can create a cloud profile with the “Azure” type.

We will need at least a name for our cloud profile. The Terminate Instance Idle Time is an important one to configure: it tells TeamCity how long an instance can be idle before it will be stopped. As Microsoft calculates costs based on the number of minutes a machine runs, it is recommended to adjust this setting according to our usual build length. This reduces the amount of time a virtual machine is running and thus, reduces the cost.

Create an Azure cloud profile

TeamCity will need two more things to be able to provision virtual machines on Azure: a management certificate and the ID of the subscription in which to deploy build agents. After downloading the publish settings, find these values in the downloaded XML files and paste them in the plugin configuration.

Clicking Add Image lets us specify the virtual machine (image) we want TeamCity to run. The TeamCity Azure plugin supports two modes of operation:

  • Start/stop, which starts and stops an existing virtual machine on demand.
  • Image-based, which creates and destroys virtual machines based on an image.

Let’s go with an image-based approach and provision up to 10 agents based on the TC-Agent image I’ve created. We have to specify the service in which we want to provision virtual machines. The service must be either empty or contain only a virtual machine deployment. It is recommended to create a new, empty service for this.

Next we can choose the VM size, as well as a username/password for the user that will be created during the provisioning process. Note that the password has to match Azure’s password requirements.

Run TeamCity agent in Azure

After adding the image and saving the cloud profile, TeamCity does a test start for them to learn about the agents configured on them. Once agents are connected, TeamCity stores their parameters to be able to correctly process build configurations-to-agents compatibility.

From now on, TeamCity will first try to start builds on regular build agents. If none are available, it will start compatible agents in Azure. We can see the running images from the Agents | Cloud page and optionally start/stop them as needed.

TeamCity agent running in Azure

Head over to the documentation for the TeamCity Azure plugin and give it a try.

Happy building in the cloud!

Posted in Features, FYI, How-To's, News & Events, Tips&Tricks | Tagged , , , , | 16 Comments