While TeamCity provides a lot of functionality out of the box and bundles a number of plugins in its distribution package, there are still use cases where you might need something extra. In this blog post, we are going to list 14 cool plugins that add new features or integrate with external tools. The plugins are not bundled with TeamCity in the distribution package but can be easily installed from the JetBrains plugins repository.
First, let’s take a look at the plugins that add new functionality to TeamCity for a very specific task in your build process. It could be a plugin that adds in integration with a build tool, provides a specific build step or a build feature, a UI extension, and so on.
Agents priority is a very nice plugin developed as part of our previous TeamCity Plugin Contest. The plugin lets you order TeamCity build agents by different criteria. Whenever a build starts, an available agent with the highest priority will be used.
AutoProperties provides a build feature that can set parameters based on whether the build was triggered by a user. It can also set different parameters depending on those that exist already. The plugin will run before any build steps are executed, so the updated parameters will be immediately available.
The Gradle Build Cache plugin applies the Gradle Hazelcast settings plugin to enable remote build caching, and starts a Hazelcast node on the TeamCity server. This should make your Gradle builds run faster – very useful!
REST runner is also one of the plugins developed during the previous TeamCity Plugin Contest. It adds a build step that allows you to execute an HTTP request to an external service and handle the response using a Groovy script.
The SSH Tunnel plugin adds a build feature that allows SSH tunnels to be opened with port and socket forwarding. After adding the build feature to a build configuration, the plugin opens the configured SSH tunnels before the build starts, and any step in the build can use the established forwards.
Now for something different… Achievements is a fun feature that grants TeamCity users various badges based on their activities. The badges are displayed at the top of the screen, next to the user’s name. Here are a few examples:
- Novelist – Granted for extra long commit descriptions.
- Debugger – Granted for a series of commits mentioning fixed bugs.
- Big Brother – Granted for assigning investigations to several different persons.
- Boy Scout – Granted for assigning several investigations for a test or problem to himself.
- … there’s more!
Use the Achievements plugin to add some fun in your CI experience! 😉
Kubernetes support is a plugin that allows TeamCity cloud agents to run in a Kubernetes cluster and provides a ‘Helm’ build step.
The Rust plugin for TeamCity enables you to build Rust programs with Cargo. The plugin detects the Cargo.toml configuration file once you add a VCS root to the Build Configuration, and suggests the corresponding build steps.
Bazel plugin adds a corresponding build step and integrates with the core functionality of TeamCity. This includes auto-discovery of build steps, Bazel tool detection on build agents, and cleanup of Bazel workspace caches. It also adds a build feature for Bazel’s remote cache in order to speed up your builds.
Now, let’s look at another category of plugins that provide integration with external services to enhance your CI/CD pipeline.
A proper CI/CD pipeline today poses requirements that go beyond the traditional build process. This includes steps for security scanning, managing binaries, running deployment tasks, managing environments, working with the reports produced by the build server, and much more. For many of these activities, there are services or tools that integrate nicely with TeamCity. Here are a few interesting tools that will help you build a sophisticated CI/CD pipeline in collaboration with TeamCity.
The Snyk plugin adds the ability to test your code dependencies for vulnerabilities against the Snyk database. When you use the Snyk plugin in TeamCity, the build process makes sure that it is in line with the Snyk org’s rules. The build will fail if the security scan detects that the code is vulnerable beyond what the policy allows.
As a result of a build process in TeamCity, we often produce binary artifacts that can stay in the build server. However, there are products tailored for working with binaries which are definitely worth using for managing your artifacts. Artifactory is a tool designed to work with binaries, and the Artifactory plugin for TeamCity makes the integration possible.
Beyond managing the efficient deployment of your artifacts to Artifactory, the plugin lets you capture information about artifacts deployed, dependencies resolved, environment data associated with the TeamCity build runs and more, that effectively provides full traceability for your builds. (link)
Not only do we produce and manage the binaries in the CI/CD process, but we also need to somehow deliver the artifacts into the environment to serve the business. Octopus Deploy is a convenient tool for delivering software packages to the servers.
The Octopus Deploy plugin for TeamCity integrates with the Octopus Deploy server in order to deliver NuGet, zip, tar, gzip, tar, bzip2, jar, war, ear and rar packages for deployment. TeamCity builds the packages and runs tests, and then Octopus Deploy takes those packages and pushes them through the development, test, and production environments.
We recently hosted a webinar about using Octopus Deploy with TeamCity and the recording is available for you to watch.
As you can see, there are plenty of interesting plugins for TeamCity tailored to many specific use cases. I would venture a guess that you, too, may have a particular use case that stands to be implemented via a plugin. Fancy having a go at it? There’s still time left, so apply for the TeamCity Plugin Contest, submit your solution, and win the day!