Kyle Carberry 013f028e55 feat: Add workspace application support (#1773)
* feat: Add app support

This adds apps as a property to a workspace agent.

The resource is added to the Terraform provider here:
https://github.com/coder/terraform-provider-coder/pull/17

Apps will be opened in the dashboard or via the CLI
with `coder open <name>`. If `command` is specified, a
terminal will appear locally and in the web. If `target`
is specified, the browser will open to an exposed instance
of that target.

* Compare fields in apps test

* Update Terraform provider to use relative path

* Add some basic structure for routing

* chore: Remove interface from coderd and lift API surface

Abstracting coderd into an interface added misdirection because
the interface was never intended to be fulfilled outside of a single
implementation.

This lifts the abstraction, and attaches all handlers to a root struct
named `*coderd.API`.

* Add basic proxy logic

* Add proxying based on path

* Add app proxying for wildcards

* Add wsconncache

* fix: Race when writing to a closed pipe

This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.

* fix: Race when writing to a closed pipe

This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.

* fix: Race when writing to a closed pipe

This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.

* fix: Race when writing to a closed pipe

This is such an intermittent race it's difficult to track,
but regardless this is an improvement to the code.

* Add workspace route proxying endpoint

- Makes the workspace conn cache concurrency-safe
- Reduces unnecessary open checks in `peer.Channel`
- Fixes the use of a temporary context when dialing a workspace agent

* Add embed errors

* chore: Refactor site to improve testing

It was difficult to develop this package due to the
embed build tag being mandatory on the tests. The logic
to test doesn't require any embedded files.

* Add test for error handler

* Remove unused access url

* Add RBAC tests

* Fix dial agent syntax

* Fix linting errors

* Fix gen

* Fix icon required

* Adjust migration number

* Fix proxy error status code

* Fix empty db lookup
2022-06-04 15:13:37 -05:00
2022-05-25 00:40:57 +00:00
2022-04-04 11:55:06 -05:00
2022-06-01 14:15:09 -05:00

Coder

"GitHub
Discussions" "Join us on
Discord" Twitter
Follow codecov

Run Coder now

curl -L https://coder.com/install.sh | sh

What Coder does

Coder creates remote development machines so you can develop your code from anywhere. #coder

Note

: Coder is in an alpha state, but any serious bugs are P1 for us so please report them.

Code more

  • Build and test faster
    • Leveraging cloud CPUs, RAM, network speeds, etc.
  • Access your environment from any place on any client (even an iPad)
  • Onboard instantly then stay up to date continuously

Manage less

  • Ensure your entire team is using the same tools and resources
    • Rollout critical updates to your developers with one command
  • Automatically shut down expensive cloud resources
  • Keep your source code and data behind your firewall

How it works

Coder workspaces are represented with Terraform. But, no Terraform knowledge is required to get started. We have a database of pre-made templates built into the product.

Coder workspaces don't stop at compute. You can add storage buckets, secrets, sidecars and whatever else Terraform lets you dream up.

Learn more about managing infrastructure.

IDE Support

You can use any Web IDE (code-server, projector, Jupyter, etc.), JetBrains Gateway, VS Code Remote or even a file sync such as mutagen.

Installing Coder

There are a few ways to install Coder: install script (macOS, Linux), docker-compose, or manually via the latest release (macOS, Windows, and Linux).

If you use the install script, you can preview what occurs during the install process:

curl -fsSL https://coder.com/install.sh | sh -s -- --dry-run

To install, run:

curl -fsSL https://coder.com/install.sh | sh

Once installed, you can run a temporary deployment in dev mode (all data is in-memory and destroyed on exit):

coder server --dev

Use coder --help to get a complete list of flags and environment variables.

Creating your first template and workspace

In a new terminal window, run the following to copy a sample template:

coder templates init

Follow the CLI instructions to modify and create the template specific for your usage (e.g., a template to Develop in Linux on Google Cloud).

Create a workspace using your template:

coder create --template="yourTemplate" <workspaceName>

Connect to your workspace via SSH:

coder ssh <workspaceName>

Modifying templates

You can edit the Terraform template using a sample template:

coder templates init
cd gcp-linux/
vim main.tf
coder templates update gcp-linux

Documentation

Community

Join the community on Discord and Twitter #coder!

Suggest improvements and report problems

Comparison

Please file an issue if any information is out of date. Also refer to: What Coder is not.

Tool Type Delivery Model Cost Environments
Coder Platform OSS + Self-Managed Pay your cloud All Terraform resources, all clouds, multi-architecture: Linux, Mac, Windows, containers, VMs, amd64, arm64
code-server Web IDE OSS + Self-Managed Pay your cloud Linux, Mac, Windows, containers, VMs, amd64, arm64
Coder (Classic) Platform Self-Managed Pay your cloud + license fees Kubernetes Linux Containers
GitHub Codespaces Platform SaaS 2x Azure Compute Linux containers

As of 5/27/22

Contributing

Read the contributing docs.

Find our list of contributors here.

Languages
Go 74.4%
TypeScript 23.5%
Shell 0.8%
HCL 0.4%
PLpgSQL 0.3%
Other 0.2%