This plugin leverages the TeamCity Cloud API in order to start and dispose TeamCity agents hosted in Docker containers on demand. Containers can be configured, and tested, directly from the TeamCity configuration interface. This cloud provider also has built-in support for Official TeamCity agent images, and resolve them automatically according to your TeamCity version.
- TeamCity 10.x or greater.
- A Docker daemon accessible through either TCP, Unix Socket, or Windows name pipe and supporting the remote API v1.24 (Engine version 1.12.x).
Browser requirements are the same than TeamCity itself (IE9+ or recent version of Firefox/Chrome/Safari/Opera/Edge).
- Upload the plugin archive using the "Administration | Plugin List" section of your TeamCity instance, or copy it to the plugins subfolder in the TeamCity Data Directory.
- Access the cloud configuration page for your project ("Administration | <Your Project> | Cloud Profiles") and add a new cloud profile using Docker as Cloud type (for TeamCity 10.x, the cloud configuration page is located at the top level of the Administration section).
- Configure the access settings to your Docker instance.
- Register and configure a Docker image hosting the build agent. You can test the image directly from the same configuration page.
By default, the official TeamCity agent images will be used. These images are usable without any additional configuration, but you may need to tune the container settings a little depending on your build requirements.
For the latest information on the development of the plugin, and access to preview versions, visit the project's Gitter chatroom.
This project uses Gradle Kotlin scripts to build and package the plugin. To create the plugin archive simple run the
tcDist
task using the provided gradle wrapper:
./gradlew tcDist
For more information about building and testing please check the Wiki.
Unless otherwise specified in their header, all files are distributed under the Apache License 2.0.
This plugin bundles the following third-party libraries:
- Jersey, the JAX-RS reference implementation, along with the Apache HttpClient connector (CDDL License).
- Jackson, a fast and lightweight JSON processor (Apache License).
- Apache HttpComponents Java HTTP client (Apache License).
- junixsocket, Unix domain sockets for Java (Apache License).
- xterm.js, a terminal front in Javascript (MIT License)
- clipboard.js, clipboard manager for Javascript (MIT License)
- ua-parser.js, a lightweight User-Agent parser for Javascript (MIT License).
- base64js, a base64 encoder/decoder in Javascript (MIT License).
In addition, the docker-java library was also a source of inspiration.
Lot of thanks to the respective authors of these software.
This software has been built thanks to the unfailing support of my company (Puzzle ITC) to Open Source projects. Kudos to them. |