

If you’d like to follow along, be sure you have the following: This tutorial will be a hands-on demonstration. Installing JetBrains TeamCity Server on Ubuntu.After which we will connect Build Agents to it to run our build. So, first we will install TeamCity server and then configure a continuous integration pipeline for a simple Java Gradle project that builds a Docker image and pushes it to a private DockerHub registry. Steps to setup our CI Pipeline from scratch: Note that when using TeamCity Cloud you don't have to do this setup, so you can get started much faster. In the video I show you the self-managed alternative, meaning installing and configuring the TeamCity server and connecting the Build Agents ourselves. Get started with TeamCity - Setup CI Pipeline from Scratch 👩🏻💻 So TeamCity will automatically detect a build agent with Docker installed on it and execute the build on that build agent. If your build creates Docker image from your application and pushes it to Docker registry, obviously Docker will be needed to run these steps. And each agent can have different tools installed on them.Īnd for each build TeamCity will automatically detect what build agent can execute that build based on the steps configured in that build.įor example, if your build is using npm command to run JS tests, you will need a build agent with npm installed on it to run the build. These agents can be installed anywhere, on an EC2 server, on your own on-premise servers, it could be a Docker container etc.

And you can add and connect any number of build agents to your server. Once you configure the builds they need to run somewhere, right? For that TeamCity has Build Agents. You have a central management component, called TeamCity server, where you can configure your builds and see your build information, all in a nice UI. How TeamCity works - TeamCity Architecture 💡 Personal builds are available for all major IDEs. This can be really useful if you want to test your changes before committing your code. So this is a very convenient way to trigger builds on a remote TeamCity server from your local development environment. Personal builds are like developer's own builds which ONLY they can access. One more great feature I want to mention is that you can run what's called "Personal" builds directly from your code editor. An example use case for this would be, if you want to run the same tests on different platforms or environments, like on different operating systems or different cloud platforms etc, before building and deploying the application. In addition to running builds in sequence, you can also run them in parallel. You can also easily pass the artifacts or other outputs from one build to another. So whenever you run a build, TeamCity will check for all of its dependent builds and run them first in a correct order. That means you can configure which builds depend on which ones in a chain. In TeamCity you can create build chains 🔗 from your builds by defining dependencies between them. This can help you keep your CI/CD configuration clean and maintainable. So you have the power of a full-featured programming language and can use its libraries and tool set as well as make use of autocompletion and refactoring in your IDE etc. In TeamCity you can write your configuration code using a real programming language, which is Kotlin (developed by JetBrains itself 🤓). ) make it really easy to use, as you don't need any third-party plugins/addons for the common tasks.Ĭonfiguring the build in a nice UI is great, however nowadays, we want to configure builds, tests, and deployment as code that is trackable and stored in a version control system. These out-of-the-box integrations with many popular tools (version control, issue tracker, package repository. using build tools like Maven, npm or Gradle.One of the main advantages of TeamCity is its simple configuration.Ĭompared to Jenkins e.g., you don't need to install and configure plugins for each and every common task like,

It's a powerful platform for DevOps-centric teams DevOps tool of the month is a series, where each month I introduce one new useful DevOps tool in 2021 🙌🏼įor April I chose: TeamCity 🎉 - the general-purpose CI/CD solution by JetBrains.
