terminal

module
v0.16.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 13, 2023 License: Apache-2.0

README

Cirrus Terminal

A service that powers Cirrus CI's task terminal access.

It's used as follows:

  • pkg/host package is used in the Cirrus CI agent and acts as a terminal host
  • internal/server is running in the cloud and provides the server functionality
  • Cirrus CI web frontend acts as a terminal guest

Architecture

The whole system consists of three components:

  • host — provides terminal sessions by registering itself on the server
    • currently works over gRPC
  • server — acts as a rendezvous point between host and guest
  • guest — connects to the hosts through a server and consumes terminal sessions
    • currently works over gRPC-Web, however, in the future, it's technically possible to provide an ability to connect to the hosts via server using a standard SSH client

The most up-to-date protocol specification can be found in the terminal.proto, but to give a bit more visual picture, the overall data flow looks like this:

Development

Development is done as you'd do normally, however, in case you need to make terminal.proto changes, you will need re-generate the internal/api package contents.

To do this, make sure Protocol Buffers Compiler (protoc) is installed, and run the following command from the root of the project:

make

The JavaScript stubs are generated automatically by the JavaScript Protocol Buffers and gRPC code-generation task in the .cirrus.yml.

Directories

Path Synopsis
cmd
internal
api
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL