Moving projects from one server to another

Ability to export and import projects is a quite popular request in our tracker. We worked hard to bring this feature in 9.0, and this EAP build is the first one where you can finally try this functionality.

The import is possible from the Projects Import page in the Administration area.

To start importing projects you need:

The projects import feature allows you to select the import scope: you can import project settings, builds and changes history, and user accounts. Since the imported project can also use settings from parent projects, TeamCity will also import all the vcs roots, templates, meta-runners and other project related settings for parent projects. If the same project already exists on the target server, the existing objects will not be overwritten.

For now there are still some important limitations:

Moving artifacts and logs

Despite the fact that TeamCity can't import artifacts and logs right from the backup file, there is still a way to copy/move them from the source to the target server. Each import process creates the projectsImport-<date> directory under TeamCity logs and as the final step of the import, .bat and .sh scripts for copying artifacts will be generated and placed under this directory. These scripts accept the source and target data directories via the command line. The rest is done automatically. These scripts can be executed while the server is running.

Security notes

Favorite Builds

Starting from this EAP, to easily access builds you want to monitor, you can mark them as favorite. Any manually triggered build will be marked as favorite automatically. The marked builds will be listed on the "My Favorite Builds" page. In addition, notification rules can be configured for such builds.

Managing custom charts from the TeamCity Web UI

Before this build, you could manage your custom charts by manually modifying the <TeamCity Data Directory>/config/projects/<ProjectID>/pluginData/plugin-settings.xml file. Now you can create a new chart:

More details on this feature are available in our documentation.

Create build configuration from Meta-Runner

Currently to change a Meta-Runner you have to edit xml file. This is a error-prone process. Not to mention that if a Meta-Runner is already used, changing it without the ability to test it first may fail a lot of builds. To make this process easier, we introduced an ability to create a build configuration from a Meta-Runner. Once the build configuration is created, you can change its steps, adjust parameters and requirements, check how it works, and then extract into a Meta-Runner with the same ID.

Settings in Version Control

The Change log tab listing all changes in the VCS root where project settings are stored has been added to "Versioned Settings" page.
In addition, you can now disable showing settings changes in builds.

Perforce

New options were introduced for Perforce VCS roots:

7-zip support for published artifacts

TeamCity can now compress published artifacts to a 7-zip archive:
**/* => dist.7z

As with other supported compression algorithms you can also specify artifact dependency for files inside a 7-zip archive:
dist.7z!folder/**

Browsing inside 7-zip archives is also supported. But for now we do not support browsing inside 7-zip placed into another 7-zip archive.

Set parameters to dependent builds

If you worked with TeamCity snapshot dependencies, you probably know about dep. parameters. So if the build configuration with ID A has a snapshot dependency on the build configuration with ID B, build in A can reference B parameter using the syntax:
dep.B.<parameter name>

But sometimes when you start a chain, you want to push a parameter to some or all chain nodes from the top build. It is now possible in this EAP build. With the example above, if you want to start a chain B -> A and push the parameter param to B, you can add a parameter with the name dep.B.param to A, either in a custom build dialog or via build configuration parameters. If you want to push parameters to all dependencies, you can use dep.* in the parameter name: dep.*.param.

Other Improvements