Still need to generate instructions for authorized keys. A lot of troubleshooting for the form to cookie persistence.
94 lines
3.7 KiB
Plaintext
94 lines
3.7 KiB
Plaintext
package templates
|
|
|
|
templ About() {
|
|
<div>
|
|
<h1>about</h1>
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<p>
|
|
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.
|
|
</p>
|
|
|
|
<p>
|
|
Both ssh and sftp are supported. Multiple shells are also allowed.
|
|
</p>
|
|
|
|
<p>
|
|
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. This behavior as well as general expiry can be
|
|
controlled from within a shell session by touching a .hold file. After logging in, the
|
|
user can control expiry of the session as instructed by messages in the ssh session.
|
|
When the timeout of a session is near the user is informed about this with messages
|
|
in the shell.
|
|
</p>
|
|
|
|
<p>end-to-end encryoption</p>
|
|
<p> ssh keys</p>
|
|
<p>agent options </p>
|
|
<p>client access </p>
|
|
|
|
<h2>Local clients: using ssh with a proxy command </h2>
|
|
|
|
<p>
|
|
<code>wsproxy</code> is a command that can be used as a proxy command for SSH which performs the connection to the
|
|
remote server. This command needs to be downloaded only once (see <a href="downloads.html">downloads</a>). It does not depend on
|
|
the converge implementation but only on the websocket standards. Other tools that
|
|
provide a mapping of stdio to a websocket can also be used instead of wsproxy.
|
|
</p>
|
|
|
|
<h2>Local clients: using SSH with a local TCP forwarding proxy</h2>
|
|
|
|
<p>
|
|
This option is less convenient than the proxy command because it requires two separate
|
|
commands to execute.
|
|
</p>
|
|
|
|
<p>
|
|
Local clients can connect using regular ssh and sftp commands through a tunnel that
|
|
translates a local TCP port to a websocket connection in converge. See
|
|
the <a href="downloads.html">downloads</a> section.
|
|
This runs a local client that allows SSH to port 10000 and connects to converge using
|
|
a websocket connection.
|
|
</p>
|
|
|
|
<h2>Remote shell usage</h2>
|
|
|
|
<p>
|
|
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.
|
|
<code>--shells zsh,csh,sh</code> (linux) or <code>cmd,powershell</code> for
|
|
windows.
|
|
</p>
|
|
|
|
<p>
|
|
The agent sets a <coder>agentdir</coder> environment variable that points to
|
|
the directory where the agent is running.
|
|
</p>
|
|
</div>
|
|
}
|
|
|
|
|
|
templ AboutTab() {
|
|
@BasePage(1) {
|
|
@About()
|
|
}
|
|
}
|