Building plugins and extensions for Jenkins, Bamboo, and TeamCity CI Software
Onsite development companies have started opting for CI/CD tools. Continuous Integration and Continuous Delivery (CI/CD) tools help with timely software delivery. In fact, using CI/CD tools is an SDLC best practice today. These tools prove to be ideal for deploying software faster. They also deliver results with fewer errors. For a Java Developer, Jenkins Bamboo and TeamCity TI are some of the most suitable CI/CD tools in the market. Thinking of using them to build plugins or extensions? First, consider the following angles.
The reason behind Jenkins‘ popularity is that it can:
- Integrate, and
Code as soon as a developer commits it to the source repository. That too, automatically. It makes error detection and deployment easier and faster for developers.
Jenkins was originally created to build automation tools for Java applications. It was also written in Java. But later, it evolved into a multi-faceted platform. This platform had thousands of plugins for other software tools as well. When using Jenkins with Java projects, Apache Maven and Gradle are primary options.
Modern Jenkins versions support specific Java versions which include:
- Java 8 runtime environments (both 32-bit and 64-bit) and
- Java 11 runtime environments.
Older versions of Java, (Java 9, 10 and 12) are not supported.
Any Jenkins project performs a full test flow with only JDK/JRE 8 and JDK/JRE 11, only 64-bit versions.
If we talk about using specific plugins, the following Java requirements must be fulfilled. If:
a) A Java Developer uses Maven Integration Plugin, JDK version used for the build must be the same as the Jenkins version.
b) A Swarm Plugin is used to create agents, JRE version must be the same as the Master’s version.
c) A Docker Pipeline Plugin is used with a bundled JRE/JDK to execute jobs, versions of this bundled JDK must be the same as the Master’s version.
For monitoring Java versions on agents, Jenkins the ‘Versions Node Monitors’ plugin can be used. It is for setting up Java version monitoring across the Jenkins System.
Bamboo is a CI/CD tool from Atlassian, a company known for its software management tools. Like Jenkins, Bamboo can be used to:
- Automatically build
- Integrate, and
- Test source code.
Belonging to the same manufacturer, Bamboo integrates with Atlassian’s other tools. (Such as Jira and Hipchat).
Atlassian included a very useful feature to improve the speed of deployment. In Bamboo 6.0, it introduced a new way to configure builds, called Bamboo Specs. This allows configurations of Bamboo plans to be stored. In text format. Remotely. Before this, developers used the UI to change or create build configurations. This of course, took more time. As Bamboo Specs uses Java, users get all the benefits from their IDE. (Such as autocorrect and syntax highlight). This improves the productivity of Java Coders. They can build configurations as fast as the codebase itself! Quick changes give developers more ownership and responsibility over the CI pipeline.
Bamboo requires the full Java Developers Kit (JDK) platform to be installed on your server’s operating system. As Bamboo is a pure Java application, it can run on any platform. Provided all the JDK requirements are satisfied.
For an application server, currently Apache Tomcat is supported. Tomcat is a stable, lightweight and fast performing application server.
TeamCity is another commercial CI/CD Server from JetBrains. Its prominent features are its very simple setup and interactive user interface. It provides a robust set of features that are ‘out of the box’ and a growing plugin ecosystem.
TeamCity runs in a Java environment. The tool can be installed on both Windows and Linux servers. TeamCity also supports GitLab and Bitbucket Server pull requests. It provides multiple ways to reuse settings and configurations of the parent project. It can also run parallel builds simultaneously on different environments.
Java Installation and Requirements:
The TeamCity Server is a JVM web application that runs in the Tomcat Application Server. The TeamCity Server requires a Java SE JRE installation to run. A Compatible JRE is already bundled in TeamCity Windows’s installer. But it has to be installed separately when using Linux.
Experts recommend that users run the TeamCity Server with the latest Java 8 (64 bit). The Support for Java versions 9, 10 and 11 is experimental for now, so Java 8 is still the recommended version.
Have you configured any native libraries that you want to use with TeamCity? (Like .dll for using the Integrated Security option of the Microsoft SQL database)? If yes, you will have to update the libraries to match the JVM (32/64 bit) platform.
TeamCity Server is bundled with the 64-bit JVM but it can run on both the 32- and 64-bit Java. While upgrading from 32-bit Java to the 64-bit JVM, know that memory usage almost doubles when switching from the 32- to 64-bit JVM.
Which CI/CD Tool Is Best for You?
As a Java Developer, you can pick your preferences. They all run smoothly in the Java environment. This is thanks to the top talent behind these CI/CD tools. They have always emphasized quick integration and delivery.
All three offer some unique features. The comparison below will help you decide which one works best for your Java project:
Open-Source Vs Commercial
Jenkins is an open-source project. It’s supported by a rich community of top developers from all around the world. By contrast, Bamboo and TeamCity are commercial tools maintained by their parent companies.
As open-source software, Jenkins is completely free. TeamCity also offers a rather usable free version. This version comes with 100 build configurations and unlimited builds. Beyond this point, users have to pay a fee that starts at $299 per year.
Bamboo is the most expensive of all. It starts at $10, but offers very limited features for this price. For complete software you have to pay a one-time fee, ($880) for one remote agent.
Ease of Use
TeamCity takes the lead for ease of setup and use. It’s known for its out-of-the-box simplicity. It also has a beautiful UI that makes it even easier for CI amateurs. Bamboo is not far behind in its ease of use, but its UI is not that good. Jenkins UI feels quite old and has a lower usability and ease-of-setup.
TeamCity comes with several interesting features, like:
- Source control
- Excellent build history and
- Building chain tools right out of the box
Bamboo has fewer features at the start. But, being an Atlassian product, it gets an upper hand. Because it provides native integration with Atlassian’s entire tool stack. Jenkins is the most feature-deprived tool of all three. But, being open-source software, it makes up for it with a huge plugin ecosystem.