Looking for TeamCity hosted by JetBrains? Please see TeamCity Cloud.
TeamCity On-Premises 2024.07
Released: Jul 18, 2024
Updates in 2024.07
Features
New Licensing Mechanism
You can now log into the JetBrains Account from TeamCity and choose a server license to activate. Once connected, TeamCity will automatically receive updates for all server and agent licenses, meaning you will no longer need to manually enter your license codes for any additional agents or server subscription updates.
The new mechanism does not impact existing licensing or purchase policies and is entirely free, regardless of your server license type (including free-tier Professional servers). It benefits all TeamCity users by linking your server instance to the JetBrains account, enabling server administrators to receive timely email notifications about critical security updates.
Custom Location for Versioned Settings
When you enable synchronization on the Versioned Settings page in your project settings, you can now specify a custom location for your remotely stored Kotlin DSL scripts and XML settings.
This flexibility is especially beneficial for teams working with monorepos. It allows multiple standalone TeamCity projects to target the same repositories without conflicts, by storing project settings in different custom directories instead of the default .teamcity folder.
This feature also enables you to organize the versioned settings of all your projects in a single repository. This streamlined approach simplifies DSL script maintenance and enhances security by keeping configuration files separate from your main codebase.
Store Server Configuration Files in the Version Control - Starting with this version you can store the contents of your server's Data_Directory/config directory in an external repository. This setup allows you to view and investigate the complete history of server edits, and easily restore these configuration files should they ever become corrupted.
VCS Intergration Enhancements
New GitHub Checks Webhook Trigger - This release extends the collection of build triggers with a new trigger designed exclusively for GitHub-facing build configurations set up via TeamCity GitHub App connections. The new trigger is an all-in-one solution that implements a two-way GitHub-TeamCity integration: TeamCity configuration runs a build for all pushes, no matter how frequently they occur, and communicates the build result status back to GitHub. With this trigger in place, you no longer need to configure the standard VCS trigger or Commit Status Publisher.
Non-Recursive Submodule Checkout
The Submodules setting of Git VCS roots allows you to choose whether TeamCity should check out submodule repositories referenced by your main repo. The "Checkout" option corresponds to the recursive checkout process, making TeamCity fetch the entire hierarchy of repositories.
The new "Non-recursive checkout" option added in this version allows you to limit the depth of submodule hierarchy by 1. In this mode, TeamCity checks out only those submodules directly referenced by the main repository. Lower-level repositories referenced by submodules are ignored.
Security Enhancement for TeamCity Connections
Added the new Enable unique callback/redirect URL setting to the following TeamCity connections:
Azure DevOps OAuth 2.0.
Bitbucket Server/Data Center.
GitHub App (manual).
GitHub Enterprise.
GitLab CE/EE.
JetBrains Space (manual).
This setting adds a unique string to callback/redirect URLs required to configure OAuth integration with version control systems. Using unique URLs prevents attackers from implementing a malicious authentication server that mimics a real one - the technique used in potential mix-up attacks that trick client applications into leaking VCS authentication codes.
Upload SSH Keys from the Create Project Page - When you create a new project from an SSH URL, TeamCity shows a list of available SSH keys. Starting from this version, you can upload new keys directly from this page.
Sakura UI: Problems Page Redesign - The Project Home Page has been overhauled to simplify the user experience and facilitate build failure investigation and resolution workflows.
Build Runner Updates
Bootstrap Steps - You can now add build steps that run right after a build starts, before source files are checked out on an agent. This enhancement allows you to perform preliminary setup, such as preparing a required directory hierarchy or making sure the required files in the checkout directory are not locked by another process.
NUnit and NAnt Runners Deprecation
This release introduces an updated NUnit runner that, compared to the legacy runner, does not allow you to select a .NET Runtime or .NET Framework version. If needed, use the Additional command line parameters field to specify these settings. In addition, the updated runner no longer supports outdated NUnit 2.x.x versions.
In this release, both updated and legacy runners are fully functional and available from the Build Steps page.
The NAnt runner is being deprecated. Unlike NUnit, it has no updated counterpart and will only be available via a separate Marketplace plugin once unbundled.
Miscellaneous Changes
The list of statistic values reported by TeamCity now includes the AllTestsDuration value.
The database connection setup wizard that pops up during the first TeamCity server launch now installs the following JDBC drivers depending on the selected database type:
MySQL database file: mysql-connector-j-8.3.0.jar.
MS SQL server: mssql-jdbc-12.6.0.jre8.jar and sqlserver12-win-auth.jar for authentication.
PostgreSQL: postgresql-42.7.1.jar.
The backslash character (\) is now the default escape symbol that allows you to use special characters in feature branch specifications. This symbol was commonly recommended as an escape symbol in TeamCity documentation and support tickets.
TeamCity now supports Perforce depots mapped to multiple workplace locations (the ditto mapping).
The VCS Labeling build feature now allows you to specify a string that should be written to the description field of Perforce labels.
TeamCity metrics set now includes four more experimental metrics that allow you to measure the number of tasks that carry out version settings synchronization.
executors_versionedSettingsUpdate_activeTasks.
executors_versionedSettingsUpdate_completedTasks.
executors_versionedSettingsUpdate_poolSize.
executors_versionedSettingsUpdate_queuedTasks.
The new build_queue_incompatible metric allows you to track the number of builds that are not compatible with any of the currently available TeamCity agents (including existing cloud profiles).
Fixes
"Always, even if build stop command was issued" step is not executed as expected.
Inability to Override hashiCorpVaultParameter in TeamCity When Declared in Templates.
Copy of project does not retain archived state for subproject.
Builds aren't reusing when triggered on non-default branch and with parallel tests build feature.
Commit Status Publisher does not change commit status when successfully finished build is marked as failed.
Confusing pending changes and history builds after force push in git.
Support Perforce Ditto Mappings.
"Build requires my approval" notification email is not sent for builds from Retry trigger and Re-run action.
Create new project from repository URL with token and without username fails with "Anonymous authentication has failed".
Deadlock while applying settings from VCS.
Artifact dependency for filenames with '%' symbol.
Edition of the existing credential after custom encryption key regeneration does not re-encrypt current values.
JB license: Server cannot start, if it couldn't parse corrupted JWT token.
Failed to run telegraf with config file.
Make Build.isChangesCollectingInProgress lazy by default.
Build incorrectly marked as History in case of a fast forward merge.
java.lang.ArrayIndexOutOfBoundsException from PerfMon.
Changes are not collected if the Pull Request source branch contains brackets and the VCS Root branch spec is not empty.
Matrix builds cannot start because of disabled agent requirements from parent build.
TeamCity can produce excess load to a cloud provider because of multiple non-cached requests.
No way to configure Dependency Cache build feature using Kotlin DSL.
Improve the error message for GitHub App Test Connection in case if incorrect settings are used.
Access token is not saved if the project is created from scratch.
Exception on first login via GitLab Auth for a user without public email.
Infinite loader on the non-existent test page..
Perforce Helix Swarm: Commit Status Publisher only publishes comments on reviews in an open state.
SSH Exec step should fail if we got non-zero exit code.
Sending verification e-mail does not work on secondary nodes.
Converter DownloadedArtifactsIndexesConverter fails during the update from TeamCity 7.x to 2024.03.x.
Do not merge test outputs for different flows in TestOutputMergingIterator.
Align multiline messages when downloading buildlogs.
Support flowAware mode when downloading buildlogs.
Unable to collect changes error in case of parametrized settings VCS root.
Improve the dialog of the Manual Creation of the GitHub App Connection in case of long TeamCity Server URL.
Mercurial plugin doesn't support updated share extension behavior.
Container info tab: change column name from Image to Digest.
Vertically resized Value field in "Add new parameter dialog" jumps to smaller size when moving cursor inside the field.
NPE parsing invalid Space init payload state.
BuildLog is not displayed correctly for some of the builds produced by older servers.
"Build settings have not been finalized" for hours.
Retried/re-run builds do not Log untrusted builds to build log.
Agent shutdown in a multi-node environment may result in a failed to start parent.
No Build problem or error message in the log if commit status publisher failed to publish the status because the incorrect Server URL.
java.lang.InstantiationException: bean historyPager not found within scope.
Agent Terminal doesn't support reloading without server restart.
Docker-compose runner doesn't work with a podman-compose.
"Internal error occurred" in Docker Compose builds running on podman agents.
Redesign the "Add new parameter" dialog: disable the button "Delete appearance settings" when parameter is uneditable.
Fix white lists property delimiter in teamcity-caches-cleanup-plugin.
Token names seem to vanish.
Use previous upper limit revisions for the checking for changes after revisions reset.
Space authentication module can choose unsuitable connection.
BuildTypeImpl.getAdditionalBranchSpecs can send an HTTP request.
Lens plugin does not re-establish new connections in case of broken connection with a OTEL collector.
Token table doesn't allow to filter by all available connections.
Checking for changes task will not finish if build chain has a build whose build configuration does not exist.
Some links opens the href pages in new UI even if user has not checked option 'use experimental UI'.
Build log: excessive white space while scrolling in Safari.
Upgraded agents can run builds with the deleted version of the tool.
Branch name does not fit into its element.
Taking build cache from the default branch does not work.
Archived projects are not shown in the new Agent pool UI.
Lens plugin: unhandled exception.
Description error of getBuildResultingProperties Rest API.
Incorrect test artifacts in the test metadata in Classic UI (same test name, different metadata).
Difficulties finding documentation for JetBrains-hosted agents in TeamCity Cloud.
Bitbucket server: OAuth sign-in can fail to fetch current user.
Changes collection failures due to massive refspecs being passed to git fetch operation.
Tests tab should include total counter of tests and their summary duration.
Multiple warnings from eApplicationInformationManager if Space connection application has Invalid client service secret.
Charts have black lines significantly obscuring visibility in statistics.
Reset password page doesn't work on secondary server node.
Broken UI in the Promote Build dialog when "teamcity.ui.runButton.caption" is set to an empty value.
A lot of NPEs may be logged if caching estimator was unable to initialize.
Using incompatible fetch and push URL in a Git VCS root results in a confusing error.
Checkout rules are not taken into account when revision is calculated for overridden VCS root.
Failed to perform checkout on agent: Problem while checkout on agent: java.lang.IllegalStateException: @NotNull method jetbrains/buildServer/vcs/perforce/ClientNameBuilder.getWorkspaceName must not return null.
Inconsistent capitalization in the test's actions menu.
Test action menu: "Show in Build Log" shouldn't be a link.
Clean-up Settings: "Periodical" -> "Periodic".
"Show changes from dependencies" checkbox is not shown on the Build Changes tab.
Space character in checkout rules defined in DSL may lead to false detection of change in version control settings of a build configuration.
Build configuration does not fill in current project information..
Settings tab prompt: Change "Show more >>" to "Show all >>".
Avoid generating automatic branch label if build has a non empty branch specification.
Agents look incompatible after installation of missing non-default tool version until re-save of build step settings.
Lens plugin ignores test data event limits.
Lens plugin S3 event names are not aligned with OTEL convention.
Remove failed to start builds limit from the retry build trigger.
No escaping of values what used during labeling build sources.
Authentication modules shows alert "discard your changes" on profile page.
Automatic thread dumps frequently have multiple /app/perforce/commitHook threads.
A page opened as a background tab is not rendered until visit.
Speedup start of the builds having .teamcity directory in the main repository.
Very slow loading of the newly generated build types because of disk usage initializing data for each newly registered build configuration.
Slow REST API request fetching deployment builds.
Changes page in Sakura takes a while to load without progress.
Inefficient DBVcsModificationHistory.getModificationsInVersionsRange() slows down REST API call.
Unloading of too many commits at once as a result of a cleanup can greatly slow down events processing.
Processing of settings persist queue may be very slow.
Slow triggers processing possibly because some of the VCS commits are unloaded from the cache because they are too old.
Favorite builds page is slow if there are many favorite builds found for a user.
RawParameterImpl and ParameterUtil$2 can occupy significant memory if there is a "select" parameter types with lots of options.
TestFailureRateCollector threads occupying Normal executor thread pool.
Single slow trigger can prevent other build configurations from triggering even when multiple trigger texecutor threads are configured.
Improve performance of multi node tasks processing.
Inefficient code in Change.isVersionedSettings possibly leading to higher CPU usage.