package templates templ About() {

about

Converge is a utility for troubleshooting builds on continuous integration servers. It solves a common problem where the cause of job failure is difficult to determine. This is complicated further by the fact that build jobs are usually run on a build farm where there is no access to the build agents or in more modern envrionments when jobs are run in ephemeral containers.

With Converge it is possible to get remote shell access to such jobs. This works by configuring the build job to connect to a Converge server using an agent program. The agent program can be downloaded from within the CI job using curl or wget. Next, an end-user can connect to the Converge server, a rendez-vous server, that connects the client and server together.

other tools

Using available existing tools such as breakpoint in combination with a websocket tunneling tool such as wstunnel a similar solution can be obtained. There are however some problems with these solutions that converge is trying to address:

Converve server addresses these issues in the following ways:

how it works

The steps involved are as follows:

Security

The setup is such that the connection from client (end-user) to server (agent on CI job) is end-to-end encrypted. The Converge server itself is no more than a bitpipe which pumps data between client and agent.

Currently converge server still supports password based login but this will be disabled. Image two people configuring an agent with the same id where one of the agents actually gets it and other gets a new id. Now, with a password each user can access each other's agents. This is of course highly confusing and undesirable. Converge server already support authorized keys but this is not yet mandatory. I is made extremely easy through the usage page to configure this, so the additional complexity should not be an issue.

SSH and SFTP

Both ssh and sftp are supported. Multiple shells are also allowed.

Timeouts

There is a timeout mechanism in the agent such that jobs do not hang indefinitely waiting for a connection. This mechanism is useful to make sure build agents do not keep build agents occupied for a long time. By default, the agent exits with status 0 when the first client exits after logging in.

When the user touches a .hold file, the agent keeps waiting for connections even after the last client logs out, taking into account the timeout.

The sessions have an inactivity timeout. Any keypress on the keyboard by a user is interpreted as activity.

Remote shell usage

The agent supports a --shells command-line option by which a comma-separated list of shells can be prepended to the default search path for shells, e.g. --shells zsh,csh,sh (linux) or cmd,powershell for windows.

The agent sets a agentdir environment variable that points to the directory where the agent is running.

} templ AboutTab() { @BasePage(1) { @About() } }