- each time when you make a commit into .teamcity, TeamCity will execute Kotlin DSL files. Since internally, TeamCity still operates with XML, executed DSL files will produce a bunch of XML files. These XML files then will be applied to existing project effectively changing its configuration. In case of any problems (compilation failures, runtime errors, etc), new changes will not be applied, and current project settings will be preserved on the server.
- once project is switched to Kotlin, project settings web UI will become disabled (except a few pages: Versioned settings, Maven Settings, SSH keys and Meta-runners), because currently there is no way to propagate changes made via web UI to Kotlin DSL files.
- Kotlin script is executed on the server, and since this is a potentially dangerous operation, the script is executed in sandbox. It cannot modify file system except the place where it is executed, cannot run other programs, cannot use reflection, and so on.
- at this point Kotlin DSL is experimental, and provided API can change significantly with time
Example of a Project defined in Kotlin DSL: