Blogroll Features FYI News

TeamHackCity: Plugin Week 2014

Hello, one and all!

Today I want you to take a peek behind the scenes of the TeamCity development process. Some time ago our team of superstars held the TeamCity plugin week which has by now become traditional. The period in-between releases seemed to be the perfect time for our developers to unleash their creativity and boy, they had a ball!

We hope to arouse your interest, but be warned: some of the plugins are pretty raw, in pre-alpha state, and PROVIDED “AS IS” WITHOUT WARRANTY OF ANY KIND. Do not install them in production without testing!

Being given time to put their thoughts into lines of code, our developers went really wild, and came up with a number of ideas! Prepare yourselves for the unexpected!

SonarQube Plugin

We have a lot of votes for Sonar integration in our tracker. So please welcome the initial version of the Sonar plugin! The plugin comes with the Sonar build step and a simple user interface for configuring Sonar servers. More will be added based on your feedback!

Sonar Build Step
Author: Andrey Titov
Availability: Sources on GitHub

The TeamCity Achievements plugin

A sense of humor is a sign of intelligence, and this plugin is indispensable for TeamCity as an intelligent Continuous Integration server! It’s all about challenging and motivating your developers: the plugin grants achievements to users for record numbers of various actions in the TeamCity web interface.

achievements

  • You will be bestowed the proud name of a Saboteur for bombing (i.e. muting) several tests with automatic explosion (unmute) on a specific date
  • Those disarming (unmuting) several tests, will be called brave Sappers
  • You’ll see how many Novelists you have with this achievement granted to the code contributors for extra-long commit descriptions.

Author: Pavel Sher
Availability: Sources on GitHub

Agent Custom Token Authorize Plugin

If there is a user who the TeamCity server administrators trust to authorize the agents, this plugin will delegate agent authorization to the agent machine administrator. With the plugin installed and the required properties set to the same token value on both the TeamCity server and a new agent, the agent will be authorized when connecting to the server for the first time. The plugin also helps with automatic agent deployments.

Authors: Yegor Yarko
Availability: Plugin page

TeamCity Build Agents Diff

This TeamCity server plugin is a build agents comparison tool particularly useful when investigating environment-dependent test failures. The plugin adds the Diff tab to the Agents page in the TeamCity Web UI where you can select the build agents to compare and see the differences in the agents’ parameters.

buildAgentDiff

When looking into a problem on a particular build agent, quick navigation is provided with the Go to build agents diff page link available on the Agent Summary page.

Author: Evgeniy Koshkin
Availability: Sources on GitHub

Investigations Auto-Assigner

For a continuous integration server, build management is its daily bread, and with this plugin enabled, if a build fails, TeamCity tries to understand whose commit caused the failure and to automatically assign the responsibility to the committer, so all there is to do is wait for the problem to be fixed! So far the plugin uses two heuristics:

  • If a user is the only committer to the build, he/she is responsible.
  • If a user is the only one who changed the files, whose name appears in a test or a build problem error text, the responsibility is assigned to that user.

Author: Maxim Manuylov
Availability: Sources on Github

All Builds View Plugin

With this plugin you get a friendly view of 50 latest builds on your server, including those that are running at the moment. It might not seem very interesting as such; however, it uses WebSockets for updating running builds on the page and serves as a good proof of concept of a TeamCity web interface using WebSockets. Hopefully we’ll see bits of this technology in the upcoming TeamCity releases.

Author: Dmitry Treskunov
Availability: Sources on GitHub

Other ideas

We experimented a lot during the plugins week. Some of the things we tried were too big not only to be finished during a week’s time, but even to present some results. These ideas were purely experimental, but we still think it makes sense to share them and ask for your opinion.

Import from Jenkins

We are experimenting with project import from Jenkins, and there is still much to do, but the prototype can already import the Subversion and Git version control settings for your project, as well as some build runners and build triggers. Is it something you’d be interested to see in TeamCity? Then give us a shout.

Author: Sergey Pak

Push IDE Project to TeamCity

TeamCity already has plugins for popular IDEs, but we’ve made an attempt to move a bit further.

For instance, once you login to TeamCity VS add-in in MS Visual Studio, you can start a simple wizard which will gather solution settings and create a project on TeamCity with necessary VCS roots and build steps. The same can be done from IntelliJ IDEA or Eclipse.

So far we only scratched the surface of these features, and can’t really show any results, but if you find this idea useful, please let us know!

Authors: Evgeniy Koshkin, Vladislav Rassokhin, Evgeny Knyazev

Store Project Settings in Git

We made a series of experiments with storing project settings in Git. We had a working prototype of this feature: once you change something in the project or build configuration settings, TeamCity pushes the changes to a Git repository. If you change something directly in the repository, TeamCity applies these changes automatically.

We’re not ready to show this prototype yet. But considering the popularity of the feature and the experience we got prototyping it one could think of… But shh! Just watch for the upcoming 9.0 EAP builds :)

Author: Dmitry Neverov

Install Software plugin

The idea behind this plugin is to installs required software onto an agent during the build – if you ask it to. When the plugin is ready, you will be able to add the “Install Software” build step to your configuration: the plugin will check whether the software exists on the agent, and if not, will install it and sets up necessary configuration/environment variables to make the build agents compatible with requirements for the build. Stay tuned for more information!

Author: Leonid Bushuev

Builds Schedule in iCalendar format

There can be many ways to represent the builds schedule for the whole server. Since TeamCity 8.0 we have the Builds Schedule tab in the project settings. But our developers decided to prototype another idea: to export information about scheduled and/or finished builds as standard iCalendar files. In this case you could use your favorite calendar tool to browse this schedule. So far, we only have a prototype , but if you like the idea, please let us know!

Author: Ekaterina Shliakhovetskaja, Oleg Rybak

We all are excited to hear your feedback on these plugins: although some of them are just ideas or prototypes and probably will not make it to full-blown TeamCity features, their future is dependent on your interest!

Besides, these plugins can be a good example of the TeamCity plugin code and the possibilities you yourselves have at hand: you can develop your own TeamCity plugins at any time and seamlessly integrate them with the current functionality or change the behavior of existing features!

Happy building!

image description