TeamCity and Plastic SCM: Full-Blown Automation to Deliver Faster and Better
This guest post is brought to you by Jordi Mon Companys, the Product Manager of Plastic SCM.
Continuous Delivery is one of the most effective approaches to developing high-quality software, and TeamCity’s success is a clear example. For a company that builds a version control system like we do, thinking of CI as a process to develop software may sound weird at first. Initially, we could argue that TeamCity belongs to the deploy part of the software lifecycle. But the reality is that advances in the Ops side of this lifecycle have influenced greatly how the initial phases of a software project are conceived, and therefore its tooling. As a company devoted to making the life of our users easier, Plastic SCM is providing the means for its clients to use TeamCity seamlessly.
Códice Software products and JetBrains products have a long history of integrations. Both companies have always understood the value of providing tight-knit connectors that allow users to deliver quality software to their customers. Plastic SCM is Códice Software’s flagship product: a full version control stack with cross-platform GUIs, branching and merging superpowers and more. It solves many software development riddles in a comprehensive and versatile way. TeamCity stands on the Ops side of this software lifecycle, making both tools a perfect combination for modern day DevOps.
Alpha and Omega: from source control to CI
The main outcome of this DevOps setup is that TeamCity now acts as an integrator, taking an active role in the development and automation of the merge process. Getting better and faster to the market than your competitors is by definition good. Reacting to business needs and change is also part of this approach. Thus, having source control connected to a powerful CI system is the best choice for your pipeline to fulfill these and other goals.
Connecting TeamCity and Plastic is easy. Plastic SCM developed a plugin available here (Editor’s note: the plugin comes bundled with Plastic SCM and can be installed during the setup process). Once the VCS Root is configured in the Edit Build Configuration panel, the following four steps should be performed:
1. Select Plastic SCM as your version control
2. Choose the correct server and repo and select the branches TeamCity will monitor
3. Attribute new branch filtering
A step by step branch per task example with auto merging
This is how a development cycle looks with TeamCity merging branches to main automatically when a certain attribute is set.
Plastic – Create new branch
First, a new branch named DTC-14 is created to fix task 14 in the associated issue tracker.
Plastic – Apply attribute
Next, work is done on the branch and a few changes are made to get the task fixed. Once done, mark the branch as resolved by setting a status attribute to it.
TeamCity – Monitoring
TeamCity is continuously monitoring the repo, so DTC-14 is detected and since it matches the filter conditions, it is selected to be built and merged.
TeamCity – Status
Everything went fine for task branch DTC-14, and the TeamCity status reflects it.
Plastic – Branch merged to main
Once the build is ready, Plastic SCM’s plugin for TeamCity triggers the merge to main. DTC-14 is now merged to main, and its status attribute was updated to merged. All this has been performed by TeamCity.
With this setup, TeamCity will act as a mergebot taking an active role in the development and automation of the merge process. From then on, TeamCity will run builds and tests. If no conflicts arise, it is merged to main and a build is released promptly.
More than technicalities: high-performance team culture
Eventually, our clients have experienced the freedom to experiment with ideas and products. This goes beyond tooling: companies that have the appropriate toolset can focus on change, efficiency and software quality which is, after all, what drives value to their customers and growth to their company.
In the end, Plastic SCM and TeamCity’s integration enables the worlds of software development, deployment, product management, QA and so on to converge and deliver its best. These integrations are providing the underlying toolset of the best software development methodologies.