JetBrains has released TeamCity Cloud, a hosted version of its Continuous Integration (CI) tool, with support for Kotlin DSL (Domain Specific Language) for configuring build pipelines.
TeamCity was first released in 2006 but to date has only been an on-premises product. Its role is to run tests and builds so that code changes are compiled and (insofar as it can be automated) verified as ready for deployment.
TeamCity does not itself build software, but instructs agents on build servers. An entire CI pipeline includes test, build and deployment, often to a staging server prior to production rollout.
According to JetBrains product marketing manager Alexander Rassokhin, pressure for a TeamCity cloud version only really kicked in with pandemic-enforced remote working last year. 'TeamCity has always been an enterprise-level solution,' he said.
In the context of software development, 'most larger sized companies didn't consider moving to the cloud until very recently. This started to change rapidly last year when most people started working remotely. We started to see this paradigm shift happening in the larger clients.'
A build chain visualised in TeamCity (click to enlarge)
JetBrains' own survey of the developer ecosystem last year showed that TeamCity is well behind the pack in terms of CI tool adoption. 55 per cent said they use Jenkins or Hudson; 27 per cent Gitlab CI; and after that a bunch of others – including GitHub Actions, CircleCI, Azure DevOps Bitbucket Pipelines, and more. TeamCity had just 8 per cent adoption.
A likely factor was that surveys like this do not break out commercial versus free users. TeamCity is a commercial tool, though the on-premises version has a free licence for up to three build agents and 100 build configurations. The cloud version has no free plan at all. A free plan is on the roadmap, Rassokhin told us.
Why would a development team choose TeamCity versus these other, better-known CI tools? 'There is no ultimate tool that is good for everything,' said Rassokhin. 'Most companies use a mix of tools.'
Unsurprisingly, since JetBrains is an IDE company, the main appeal of TeamCity has been its IDE integration. 'We really try to understand everything that happens during the build process. TeamCity can analyse what went wrong, find who was the author of the change that caused the failure, suggest the exact line of code that probably caused it and even open it directly in your IDE,' he said.
Gitpod ditches Eclipse Theia for Visual Studio Code under redesign, sponsors new dev experience eventREAD MORE
'You can work inside JetBrains IntelliJ IDEA, edit your code and launch TeamCity jobs without switching windows and get the feedback right in the same window.'
That is as you would expect, but the most distinctive feature of TeamCity is the option to use Kotlin DSL for build configuration. Kotlin is the language invented by JetBrains which runs on the JVM (Java Virtual Machine) and has been officially adopted by Google for Android development.
'We believe that this is the right way to go,' said Rassokhin. 'Kotlin gives you a way to work with a very tidy and compact code that is easy to maintain. With Kotlin you have all the advantages that a real programming language gives you, including tools like refactoring and auto-completions in your IDE.'
JetBrains developer advocate Matthias Koch said: 'If you dive into the DevOps world, chances are high you meet YAML around the next corner. For some tools, like Docker and Kubernetes, I think it's a good match. However, for CI infrastructure it often becomes a nightmare. Yet almost every CI/CD service out there is YAML-first.' Rassokhin said that 'large projects that are written in YAML they are really a pain to read. They are very hard to support.'
Use of Kotlin is not essential, though. A web UI offers a visual approach, or there is an API that integrates TeamCity with other scripts.
There are a few issues with TeamCity Cloud. One is that only Linux and Windows build agents are supported. Building for macOS or iOS requires developers to bring their own Mac and hook it up as a self-hosted build agent. There is also a lack of customization options: no plugins can be added to TeamCity cloud. An Enterprise plan with plugin support is promised 'before the end of 2021.'
Pricing is somewhat complex and starts from $45 per month for three committers and 24,000 'build credits,' where these credits translate to hours on build servers, with how much you get depending on the size of the build server. 24,000 credits translates to 2,400 minutes on 'Linux small.'
By contrast, GitHub will give you 2,000 free Actions minutes per month, or 3,000 for $4 per user. GitLab offers 400 CI/CD minutes free per month (less generous than it used to be) or 10,000 for $19 per month.
TeamCity then is somewhat expensive. Still, charging is one way to overcome a problem plaguing the free services: users abusing them to run cryptocurrency mining scripts, as happens on Azure DevOps and elsewhere. ®
You have probably already heard about tooling forMicrosoft VSCodeor JetBrains IntelliJ.
Last week the first version of Quarkus Tools for Eclipse was released.It’s free and open source and we encourage you to use it. Let’s see how you canget it and play with the features.
There are several ways to get Quarkus Tools inside the Eclipse IDE.
Quarkus Tools is part of JBoss Tools. So if you arealready a JBoss Tools user and if you updated to the latestversion(4.14.0.Final) then you already have Quarkus Tools installed in your Eclipse IDE.
Quarkus Tools is also part ofRed Hat CodeReady Studio,a Red Hat supported version of JBoss Tools. So if you are already usingCodeReady Studio and if you updated to the latestversion(12.14.0.GA) then you already have Quarkus Tools installed.
If you are not a JBoss Tools or Red Hat CodeReady Studio user, you can installQuarkus Tools from your Eclise IDE. Let’s see how.
Launch your Eclipse IDE and select the
Help → Eclipse Marketplace… menu:
Find textbox, enter quarkus and press the
Install button to start the installation:
When presenting the Review licenses dialog, select the
I accept the terms ofthe license agreements checkbox and click the
When presenting the Unsigned content dialog, click the
OK button. Restart the IDE at the end of the installation procedure. Quarkus Tools is now installed in your IDE.
Create your first Quarkus project
Quarkus Tools has a wizard based on https://code.quarkus.io. In order to launchit, first enter Ctrl+N to get the list of available wizards:
In the filter text box, enter the
qu characters to filter the list of wizards:
Select the Quarkus Project wizard and click the Next button:
The Project type combo allows you to choose between Maven or Gradle tool used tomanage your project. We’ll go with Maven for this tutorial.
Enter a project name (we will use code-with-quarkus) and click the Next button:
This dialog allows you to choose various parameters for you project, like the projectcoordinates (group id, artifact id and version) along with the base REST endpoint information.We’ll use the default so click on the Next button:
This dialog allows to select which Quarkus extensions you want to add to your project.The extensions are grouped by categories, so first select a specific category inthe left table. We will choose the Web one:
You should have noticed that the middle table has been updated. In order to add an extension,double click on the extension in the middle table. We will add RESTEasy JAX-RS andRESTEasy Qute (a templating engine):
You should have noticed that the extensions that you double clicked on are now being addedto the right table. If you want to remove an extension from the list of selected ones,double click again either in the center table or in the right table.
We are now all set so click on the Finish button to launch the project creation.The project creation job is then launched, dependencies are being retrieved andafter a while, the new project will appear in the Project Explorer window:
We have successfully created our first Quarkus project. Let’s see now how we can launch this application and debug it.
Running the Quarkus application
Running a Quarkus application can be done from the workbench Run configurations.Select the Run → Run Configurations… menu to display the dialog allowing to create a Run configuration.
Scroll down until the Quarkus Application is visible and select it:
Click on the New configuration button (top left):
A workspace project needs to be associated with the configuration so click on the Browsebutton to see the project selection dialog:
As the workspace contains a single project, it is automatically selected and we can clickon the OK button:
The configuration is now ready to be used. So let’s start our Quarkus application by clickingon the Run button:
The application is being built and after a while, it will be started:
Jetbrains Eclipse Kotlin Plugin
Debugging the Quarkus application
Debugging a Quarkus application is just a simple as launching the previous configurationwe’ve just created in Debug.You just need to open the Run → Debug Configurations…. menu and click on the Debug button.
It will start the Quarkus application like in the previous paragraph but also connecta remote JVM debug configuration to your running Quarkus application. So if you have set breakpointsin your application source files, the execution will automatically stops there.
application.properties content assist
Every Quarkus application is configured through a configuration calledapplication.properties.
The content of this configuration file is dependent of the set of Quarkusextensions that your application is using. Some settings are mandatory, some othersare not and the possible values are specific to the nature of the setting:boolean, integer, limited set of values (enumerations).
So, as a developer, you need to look at various guides and documentations(the core Quarkus and the extension specific ones)
So Quarkus Tools provides content assist on those specific files that:
validates the content of the application.properties files
provides you with the possible setting names and values
Go to src/main/resources/application.properties in the project and double click the file to open an editor:
Go the third line of the file and invoke code completion (Ctrl + Space):
For each setting, a documentation is displayed when you mouse over the setting.Let try to add quarkus.http.port to the file and mouse over this name:
If we enter a wrong value (false instead of a numeric value), then the error will be highlighted:
Access application from the source code endpoint
If your Quarkus application is started, when you navigate into one of theapplication source code endpoints, the URL for that endpoint will be computedand presented into the source code as a code lens which is simply an additionalcomment virtually added into the source code. Let’s see how this works.
Make sure your Quarkus application is started (see Running the Quarkus application)
Go to src/main/java/org/acme/ExmapleResource.java in the project and double click the file to open an editor:
You should have noticed that an URL is now present the line above the
hello methoddefinition. If you mouve the mouse over this URL, you will see that this URL is clickable.Click the URL and this will open a browser window:
Please note that if you change your resource or endpoint path configuration, theURL will be dynamically updated: in this scenario, I changed the resource pathfrom
hello1 (on line 8):
Language support for Kubernetes, Openshift, S2i and Docker properties
There is now completion, hover, documentation and validation for kubernetes.,openshift., s2i., docker. properties coming from the Kubernetes Quarkus extension.
Language support for MicroProfile REST Client properties
Jetbrains Eclipse Download
Likewise, there is now completion, hover, documentation and validation for theMicroProfile properties from REST Client.
MyServiceClient.java file in the org.acme package with the following content:
Switch back to the
application.properties file editor and enter
or and askfor code assist (Ctrl + ENTER):
You can change the configuration key for the client by changing the line:
and the code assist will be adjusted accordingly:
This wraps up the major features in this very first release. If you have any questions,suggestions or feedback, by all means please open an issue.
For future releases we are aiming to improve language support for MicroProfile properties.
Thank you for reading and stay tuned for the next release!
GitHub repository: https://github.com/jbosstools/jbosstools-quarkus
Open an issue: https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=10020&issuetype=1&summary=Summary&components=12333057