MCPcopy Index your code
hub / github.com/JeanRev/TeamcityDockerCloudPlugin

github.com/JeanRev/TeamcityDockerCloudPlugin @v0.5.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.5.2 ↗ · + Follow
2,103 symbols 6,935 edges 219 files 441 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

TeamCity Docker Cloud Plugin

Join the chat at https://gitter.im/TeamcityDockerCloudPlugin/Lobby status coverage license

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.

Requirements

  • 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).

Quick start

  1. 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.
  2. Access the cloud configuration page ("Administration | Agent Cloud") and add a new cloud profile using Docker as Cloud type.
  3. Configure the access settings to your Docker instance.
  4. 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.

News

For the latest information on the development of the plugin, and access to preview versions, visit the project's Gitter chatroom.

Build

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.

License

Unless otherwise specified in their header, all files are distributed under the Apache License 2.0.

Acknowledgments

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.

Extension points exported contracts — how you extend this code

DockerCloudClient (Interface)
A Docker CloudClient. [8 implementers]
server/src/main/java/run/var/teamcity/cloud/docker/DockerCloudClient.java
CheckedRunnable (Interface)
A runnable throwing a checked exception. @param the exception type [9 implementers]
server/src/main/java/run/var/teamcity/cloud/docker/util/CheckedRunnable.java
ContainerTestListener (Interface)
Container test progress listener. [5 implementers]
server/src/main/java/run/var/teamcity/cloud/docker/web/ContainerTestListener.java
StreamHandler (Interface)
Gives access to a process streams. The STDIN to the process is available as an OutputStream. The process [4 implementers]
server/src/main/java/run/var/teamcity/cloud/docker/StreamHandler.java
VoidCallable (Interface)
(no doc) [5 implementers]
server/src/test/java/run/var/teamcity/cloud/docker/test/TestUtils.java

Core symbols most depended-on inside this repo

put
called by 194
server/src/main/java/run/var/teamcity/cloud/docker/util/EditableNode.java
get
called by 188
server/src/main/java/run/var/teamcity/cloud/docker/util/CheckedSupplier.java
requireNonNull
called by 184
server/src/main/java/run/var/teamcity/cloud/docker/util/DockerCloudUtils.java
add
called by 89
server/src/main/java/run/var/teamcity/cloud/docker/util/EditableNode.java
call
called by 76
server/src/test/java/run/var/teamcity/cloud/docker/test/TestUtils.java
run
called by 72
server/src/main/java/run/var/teamcity/cloud/docker/util/CheckedRunnable.java
parse
called by 32
server/src/main/java/run/var/teamcity/cloud/docker/client/DockerAPIVersion.java
newInstance
called by 31
server/src/main/java/run/var/teamcity/cloud/docker/client/DefaultDockerClient.java

Shape

Method 1,785
Class 214
Function 74
Interface 21
Enum 9

Languages

Java96%
TypeScript3%
Kotlin1%

Modules by API surface

server/src/test/java/run/var/teamcity/cloud/docker/test/TestSBuildAgent.java72 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestHttpServletRequest.java67 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestSUser.java66 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestSBuildServer.java60 symbols
server/src/test/java/run/var/teamcity/cloud/docker/util/DockerCloudUtilsTest.java45 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestDockerClient.java45 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestServletContext.java44 symbols
server/src/test/java/run/var/teamcity/cloud/docker/util/AbstractNodeTest.java42 symbols
server/src/test/java/run/var/teamcity/cloud/docker/TestDockerClientFacade.java39 symbols
server/src/test/java/run/var/teamcity/cloud/docker/test/TestHttpServletResponse.java36 symbols
server/src/test/java/run/var/teamcity/cloud/docker/DefaultDockerCloudClientTest.java35 symbols
server/src/main/java/run/var/teamcity/cloud/docker/client/apcon/ApacheConnector.java34 symbols

For agents

$ claude mcp add TeamcityDockerCloudPlugin \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact