Commit Graph
100 Commits
Author SHA1 Message Date
Kyle Carberry 3be356095f feat: Add create workspace page (#1589) 2022-05-19 20:51:10 +00:00
Kyle CarberryandCian Johnston 38ee519f42 feat: Expose the values contained in an HCL validation string to the API (#1587)
* feat: Expose the values contained in an HCL validation string to the API

This allows the frontend to render inputs displaying these values!

* Update codersdk/parameters.go

Co-authored-by: Cian Johnston <cian@coder.com>

* Call a spade a space

* Fix linting errors with type conversion

Co-authored-by: Cian Johnston <cian@coder.com>
2022-05-19 13:29:36 +00:00
Kyle Carberry f3fe2a08ce fix: Use Terraform address to index resource + agent association (#1577)
This fixes resources created from Terraform modules not
properly being associated with an agent.

By not using the address, and resource identifiers prefixed
with `module.<name>` would be missed!
2022-05-18 16:26:08 -05:00
Kyle Carberry 97699e9704 fix: Rename NewMemoryCoderd to NewWithServer (#1571)
This name felt invalid, because `New` was also in memory.
2022-05-18 15:49:46 -05:00
Kyle Carberry 76fc59aa79 feat: Add templates page (#1510)
* feat: Add template page

* Create xService

* Update column names

* Show create template conditionally

* Add template description

* Route to templates

* Add empty states

* Add tests

* Add loading indicator

* Requested changes
2022-05-18 09:05:18 -05:00
Kyle Carberry ba818b3a10 fix: Append Terraform module resources to list (#1539)
This was causing module resources to be skipped!
2022-05-17 19:07:20 -05:00
Kyle Carberry 33701862de fix: Publish Linux releases in tar.gz archives (#1535)
This reduces download size by ~70%.
2022-05-17 21:11:13 +00:00
Kyle Carberry fc9efc2b79 fix: Allow setting STUN to an empty string (#1502)
This allows users to entirely disable STUN.
2022-05-18 00:12:48 +10:00
Kyle Carberry 668a6712e6 fix: Use relative timestamp for workspaces page Storybook (#1505) 2022-05-17 07:58:18 -05:00
Kyle Carberry 55bd7aa747 fix: Run "make gen" to regenerate queries (#1504)
This is broken in our CI, and should be fixed!
I'll likely tackle in a future PR.
2022-05-16 23:47:31 -05:00
Kyle Carberry f75d29e38e fix: Remove grouping for workspace owner counts (#1503)
This caused templates to show max ownership of one developer!
2022-05-17 04:10:52 +00:00
Kyle Carberry a2ba69dd28 fix: Parse resources from Terraform Modules (#1501)
Fixes when Terraform modules are used to primariy provision
infrastructure!
2022-05-16 20:56:50 -05:00
Kyle Carberry 9b1ef29694 fix: Allow fetching of non-personal workspaces (#1495)
RBAC should cover this anyways!
2022-05-16 22:47:31 +00:00
Kyle Carberry 22ec366535 feat: Redesign workspaces page (#1450)
* feat: Improve navbar to be more compact

The navbar was unnecessarily large before, which made
the UI feel a bit bloaty from my perspective.

* Attempt to remove overrides

* Update theme

* Add text field

* Update theme to dark!

* Fix import ordering

* Fix page location

* Fix requested changes

* Add storybook for workspaces page view

* Add empty view

* Add tests for empty view

* Remove templates page

* Fix local port

* Remove templates from nav

* Fix e2e test

* Remove time.ts

* Remove dep

* Add background color to margins

* Merge status checking from workspace page

* Fix requested changes

* Fix workspace status tests
2022-05-16 16:52:54 -05:00
Kyle Carberry a77da8445e fix: Resolve symlinks being written with size 0 in tar (#1488)
Solution found here:
https://stackoverflow.com/questions/38454850/getting-write-too-long-error-when-trying-to-create-tar-gz-file-from-file-and-d

Symlink's were being written with a size of 0, which surfaced an error
for write too long.
2022-05-16 20:26:23 +00:00
Kyle Carberry dbd5b4a47b feat: Add workspace owner name to response (#1448)
This will be rendered in the workspace page!
2022-05-13 20:41:21 -05:00
Kyle Carberry 7b5300d0cc fix: Improve develop script to start tunnel by default (#1409)
This allows for running the development script to actually
build workspaces!
2022-05-12 12:37:51 -05:00
Kyle CarberryandBen 3024e25c09 example: Add Kubernetes multi-service (#1092)
* example: Add Kubernetes multi-service

* fix: change to CODER_AGENT_TOKEN

* example: use ServiceAccount for cluster authentication (#1096)

Co-authored-by: Ben <ben@coder.com>
2022-05-11 18:27:31 +00:00
Kyle Carberry e0a7aec228 fix: Match kubectl table style for simpler scripting (#1363)
Fixes #1322.
2022-05-10 15:57:07 -05:00
Kyle Carberry dc115b8ca0 fix: Use proper endpoint for user workspaces (#1356)
This was a silly mistake in a prior PR, so the code wasn't
actually being called!
2022-05-10 03:10:47 +00:00
Kyle Carberry b675aec4dd feat: Add endpoint to get all workspaces a user can access (#1354)
This iterates through user organizations to get permitted
workspaces. This will allow admins to manage user workspaces!
2022-05-10 02:38:20 +00:00
Kyle Carberry e6f1ce1fb2 fix: Allow coderd to exit on error channel (#1355)
coderd would fail silently if this was called, because connections
would never drain. HashiCorp's hc-install package broke today,
and we couldn't notice because this was hanging!
2022-05-10 02:19:20 +00:00
Kyle Carberry ddb9631d7a fix: Group subcommands for cognitive ease (#1351) 2022-05-09 17:42:02 -05:00
Kyle Carberry 97ee5600c7 fix: Remove "CODER_URL" and "CODER_TOKEN" (#1330)
These aren't being used, so it's best to remove for now.
It caused issues with dogfooding from v1 too!
2022-05-06 18:46:21 +00:00
Kyle Carberry 914a2f477c fix: Restore terminal on interrupt when connecting (#1312)
Fixes #1292.
2022-05-05 20:11:44 -05:00
Kyle Carberry d7f63217f1 feat: Add code splitting to reduce bundle size (#1285)
This splits our pages to use separate JavaScript bundles. It
initially splits the terminal, which reduces our primary
bundle size by ~400KB.

We should do this for all pages, but that can come in a future
change. This leaves the loading page empty for now, which I
think is fine. None of our pages are large enough that the blank
screen temporarily would be concerning.
2022-05-04 14:24:31 -05:00
Kyle Carberry 4c35b8174a fix: Prefix paths in find on macOS (#1284)
This fixes paths not resolving in macOS, causing
the build target to fail. This also renames the
site target to specify the index.html, which is
the output artifact of building the site.
2022-05-04 09:47:48 -05:00
Kyle Carberry e860cc4814 fix: Build site in release (#1283)
This was using Mac Make, which is missing some options:
https://github.com/coder/coder/runs/6265845123?check_suite_focus=true#step:10:6
2022-05-04 14:23:48 +00:00
Kyle Carberry 60aa40a56f fix: Remove microsecond wait in peer.(*Channel) (#1270)
This was implemented when our WebRTC code was much less hardened.
It's likely this was a cause of some other problem.

Closes #1076.
2022-05-03 14:00:59 +00:00
Kyle Carberry 5dcaf940b6 fix: Build site in deploy (#1265) 2022-05-02 23:12:13 +00:00
Kyle Carberry fd49a18b47 feat: Add "state" command to pull and push workspace state (#1264)
It's possible for a workspace to become in an invalid state.
This is something we'll detect for jobs, and allow monitoring of.

These commands will allow admins to manually reconcile state.
2022-05-02 17:51:58 -05:00
Kyle Carberry 43c6bff5ae fix: Use "terraform state pull" instead of "terraform show" (#1262)
Although the terraform-exec docs don't indicate this, the result of
"terraform show" isn't actually the state... it's a trimmed version
of the state that excludes resource identifiers, essentially removing
all state that did exist.

Tests will be written to ensure Terraform state reconciliation can occur.
This will happen in another PR, as dogfood is currently broken because of this.
2022-05-02 20:02:38 +00:00
Kyle Carberry fc642edf51 fix: Use GoReleaser Action in deploy script (#1263)
This reduces conflictions with our Makefile, which is presently
primarily a user script.
2022-05-02 20:00:08 +00:00
Kyle Carberry e4e60256ac fix: Use "make build" on deploy (#1261)
This was a missed item in https://github.com/coder/coder/pull/1259.
2022-05-02 14:04:45 -05:00
Kyle Carberry dacc025cf3 fix: Adjust Makefile tagets to use dependencies (#1259)
It was getting slow to run `make gen` and other operations,
but this resolves it by targeting files properly.
2022-05-02 13:23:13 -05:00
Kyle Carberry 3d96785bf5 fix: Add lock around read/write of circular buffer (#1258)
This fixes a race seen in:
https://github.com/coder/coder/runs/6260926628?check_suite_focus=true#step:10:666
2022-05-02 17:31:04 +00:00
Kyle Carberry 3176e10562 fix: Use atomic value for logger in peer (#1257)
This caused many races where logs would escape the tests
by milliseconds. By using an atomic on the logger,
we can fix all of it!
2022-05-02 11:49:59 -05:00
Kyle Carberry e531c0930c fix: Write agent logs to "/tmp/coder-agent.log" for debugging (#1239)
It was difficult to obtain logs for the agent if it failed to
start for some reason. Now they'll go to a consistent spot!
2022-05-02 16:36:51 +00:00
Kyle Carberry c2b5009208 fix: Unnest workspaces command to the top-level (#1241)
This changes all "coder workspace *" commands to root.
A few of these were already at the root, like SSH. The
inconsistency made for a confusing experience.
2022-05-02 11:08:52 -05:00
Kyle Carberry 252d868298 fix: Prefix buildinfo tag with "v" (#1256)
This fixes the format of production and development build
tags.
2022-05-02 15:58:36 +00:00
Kyle Carberry d139a16446 fix: Allow remote state to be used with Terraform (#1242)
The Terraform Provisioner depended on the statefile content
being at a specific path, which disallowed the use of external
state providers. This fixes it!
2022-05-02 15:41:27 +00:00
Kyle Carberry 8701e0084c feat: Update Terraform provider to support "dir" in "coder_agent" (#1219)
This allows users to specify a starting directory for shell sessions.
2022-05-02 10:27:34 -05:00
Kyle Carberry a79aa6418a fix: Use cliui.WorkspaceBuild to prevent cancel of builds jobs (#1255)
Build jobs cannot gracefully terminate because Terraform generally
cannot gracefully terminate.
2022-05-02 10:20:47 -05:00
Kyle Carberry 34dbca7166 fix: Remove unnecessary warnings on SSH (#1243)
This disables the "Warning: Permanently added 'hostname' (RSA) to the list of known hosts."
message from appearing on every SSH. This happens because we ignore the known hosts.
2022-05-01 20:31:22 -05:00
Kyle Carberry 9b37a0de31 fix: Disable ErrorLog in http.Server (#1244)
Vault does similarly: https://github.com/hashicorp/vault/blob/e2490059d0711635e529a4efcbaa1b26998d6e1c/command/server.go#L2714

These messages have primarily been noise.
2022-05-01 20:31:12 -05:00
Kyle Carberry b948f2dab5 fix: Use environment variables for agent authentication (#1238)
* fix: Update GIT_COMMITTER_NAME to use username

This was a mistake when adding the committer fields 🤦.

* fix: Use environment variables for agent authentication

Using files led to situations where running "coder server --dev" would
break `gitssh`. This is applicable in a production environment too. Users
should be able to log into another Coder deployment from their workspace.

Users can still set "CODER_URL" if they'd like with agent env vars!
2022-04-30 16:40:30 +00:00
Kyle Carberry eb606924ab fix: Update GIT_COMMITTER_NAME to use username (#1237)
This was a mistake when adding the committer fields 🤦.
2022-04-29 20:51:11 -05:00
Kyle Carberry 2acdd3b44f fix: Add "GIT_COMMITTER_*" to remove Git prompt (#1236) 2022-04-30 01:22:17 +00:00
Kyle Carberry e15566c7fa test: Regenerate GitSSHKey flake when comparing times (#1235)
This is a crazy one! The in-memory DB is fast, which allows the same
exact timestamp to occur for regenerating the key!

See: https://github.com/coder/coder/runs/6234173911?check_suite_focus=true#step:9:82
2022-04-29 20:19:16 -05:00
Kyle Carberry 81577f120a feat: Add web terminal with reconnecting TTYs (#1186)
* feat: Add web terminal with reconnecting TTYs

This adds a web terminal that can reconnect to resume sessions!
No more disconnects, and no more bad bufferring!

* Add xstate service

* Add the webpage for accessing a web terminal

* Add terminal page tests

* Use Ticker instead of Timer

* Active Windows mode on Windows
2022-04-29 17:30:10 -05:00
Kyle Carberry 23e5636dd0 fix: Use verified and primary email for GitHub signup (#1230)
This was causing a panic due to nil pointer dereference.
It required all users signing up had a public email,
which is an unreasonable requirement!
2022-04-29 15:13:35 -05:00
Kyle Carberry eea9729704 fix: Update buildinfo package location in ldflags (#1208)
This was causing the version to not be injected!
2022-04-28 10:46:18 -05:00
Kyle Carberry 603b7da413 test: Wrap provisionerd channel closes in sync.Once (#1181)
This caused a few flakes, so figured I'd tackle all of them:
https://github.com/coder/coder/runs/6167856950?check_suite_focus=true#step:9:246
2022-04-26 09:44:16 -05:00
Kyle Carberry f9ce54a51e fix: Increase default provisioner daemons to 3 (#1180)
It's odd to only build one workspace at a time as a default.
2022-04-26 07:19:17 -05:00
Kyle Carberry 8d85d80a55 fix: Use proper shutdown signal for systemd (#1179)
Coder was being killed instantly, which caused builds
to randomly fail!
2022-04-25 21:09:11 -05:00
Kyle Carberry 744a00a55d feat: Add GIT_COMMITTER information to agent env vars (#1171)
This makes setting up git a bit simpler, and users
can always override these values!

We'll probably add a way to disable our Git integration
anyways, so these could be part of that.
2022-04-25 20:03:54 -05:00
Kyle Carberry 877854a2f3 fix: Display proper access URL on server start (#1172)
Fixes #1170.
2022-04-25 23:30:22 +00:00
Kyle Carberry 29d55887f9 fix: Update initial window size on SSH TTY (#1174)
It required a window resize before to trigger
a size update. This fixes it!
2022-04-25 23:02:54 +00:00
Kyle Carberry 947e8f9d2e fix: Manually format external URL (#1168)
path.Join escaped the double slash!
2022-04-25 22:22:31 +00:00
Kyle Carberry 159024a196 fix: Add redirect for OAuth from /login (#1163)
This allows for a complete sign-up flow:
1. coder login https://dev.coder.com
2. Navigates to /cli-auth
3. Redirects to /login?redirect=%2Fcli-auth
4. User signs in with GitHub
5. User is redirected back to /cli-auth
2022-04-25 17:07:10 -05:00
Kyle Carberry 4f7ceebe65 fix: Use target="_blank" to redirect for footer version (#1166) 2022-04-25 16:27:14 -05:00
Kyle Carberry 88669fd578 feat: Move workspaces under organizations (#1109)
This removes split ownership for workspaces. They are now
a resource of organizations and have a designated owner,
which is a user.

This enables simple administration for commands like:
- `coder stop ben/dev`
- `coder build logs colin/arch`

or if we decide to allow administrators to access workspaces,
they could even SSH using this syntax: `coder ssh colin/dev`.
2022-04-25 16:11:03 -05:00
Kyle Carberry 759fa5f626 fix: Use Lax mode for OAuth redirect cookies (#1162)
OAuthing was resulting in an error, because Strict
cookies are not sent on redirects.
2022-04-25 20:42:18 +00:00
Kyle Carberry 587cbac498 fix: Swap height and width for TTY size (#1161)
This was causing the TTY to be real wonky on Windows.
It didn't seem to have an effect on Linux, but I suspect
that's because of escape codes.
2022-04-25 15:30:02 -05:00
Kyle Carberry 33b58a0363 fix: Use forward slashes on Windows for gitssh (#1146) 2022-04-25 19:41:52 +00:00
Kyle Carberry fccd4fab96 fix: Windows resize syscall using incorrect pointer (#1152)
Resizing of PTYs weren't working on Windows before,
but they are now!
2022-04-25 14:30:57 -05:00
Kyle Carberry 64348882a0 test: Loop if content length is zero for Windows (#1151)
On Windows it seems the file can be created before the
content has been written, which results in comparing
an empty string.
2022-04-25 19:01:49 +00:00
Kyle Carberry 9056c53054 fix: Disable known hosts checking for config-ssh (#1150)
This was causing the remote identity changed message.
We don't need to verify remote hosts because we
already auth via our API.
2022-04-25 18:59:18 +00:00
Kyle Carberry a2dd618849 feat: Use environment variables and startup script in agent (#1147)
These values were ignored. Environment variables are applied to
new sessions, and are refreshed on reconnect. This is cool because
a workspace could be updated with new environment variables without
requiring a complete start/stop.

The startup script is only ran once regardless of changes, which
feels like the expected behavior.
2022-04-25 18:30:39 +00:00
Kyle Carberry 09405ddc40 test: Wait for WorkspaceResources to complete before exiting (#1149)
This caused a flake seen in:
https://github.com/coder/coder/runs/6162655678?check_suite_focus=true#step:9:87
2022-04-25 18:11:35 +00:00
Kyle Carberry 5e6e626ace test: Disable TestAgent/SessionTTY on Windows (#1148)
Either our ConPTY implementation is unstable, or something is
flakey with how it sends output. I'm not sure how our
implementation would sometimes work, so it's best to disable
this for CI stability for now.
2022-04-25 17:53:45 +00:00
Kyle Carberry 185d97a65b fix: Increase ptytest buffer to resolve flake (#1141)
From investigating the following run:
https://github.com/coder/coder/runs/6156348454?check_suite_focus=true

It's believed that the cause is data being discarded due to the buffer
filling up. This _might_ fix it, but not entirely sure.
2022-04-25 12:14:16 -05:00
Kyle Carberry 66d45f391e test: Check if provisionerd is closed before setting run chan (#1145)
This race can be seen here:
https://github.com/coder/coder/runs/6159662393?check_suite_focus=true
2022-04-25 12:00:54 -05:00
Kyle Carberry 7e33d80fa9 feat: Add helper output on failed gitssh (#1127) 2022-04-25 00:29:15 -05:00
Kyle Carberry 4417dd5951 feat: Add STUN servers to enable P2P (#1126)
This exposes a `--stun-server` option for listing
STUN servers. By default it uses the Google STUN
server, but this is not required.
2022-04-25 04:52:07 +00:00
Kyle Carberry c8e566fe42 feat: Add links for registering git key (#1125) 2022-04-25 04:27:45 +00:00
Kyle Carberry 8ff0c8b02a fix: Write agent URL to file for gitssh (#1123)
This was broken because gitssh couldn't find the URL.
Now it can, and SSH is confirmed to work on dogfood! 🥳
2022-04-25 04:06:52 +00:00
Kyle Carberry 68f67c54b6 fix: Add sync.Once to prevent double close in test (#1124)
https://github.com/coder/coder/runs/6151451291?check_suite_focus=true
2022-04-25 04:06:18 +00:00
Kyle Carberry a6ea99541e fix: Return from update loop when job completes (#1121)
Update was running forever, which stopped jobs from timing
out unless a restart occurred. This also fixes complete properly
reporting an error.
2022-04-25 03:41:03 +00:00
Kyle Carberry d44876382d fix: Remove unique index on auth tokens (#1120)
If a workspace is started multiple times, resources may
not be invalidated. This means an auth token can be
reused for a workspace.

coderd closes old agent connections, so this is expected
behavior, and the agent will reconnect properly.
2022-04-24 22:24:02 -05:00
Kyle Carberry 885d5f2098 fix: Monitor TTY size when using SSH (#1119)
The TTY wasn't resizing properly, and reasonably so considering
we weren't updating it 🤦.
2022-04-24 22:23:54 -05:00
Kyle Carberry 0c042dc249 fix: Remove duplicate index that blocked same name (#1118)
Multiple workspaces couldn't be created with the same names!
2022-04-25 02:40:14 +00:00
Kyle Carberry 23295f7f07 fix: Check for job status on another incoming (#1117)
If a job silently failed, it wasn't possible for another one
to execute. This fixes it by using the API status to return
active state.
2022-04-25 02:22:36 +00:00
Kyle Carberry db7ed4d019 fix: Add resiliency to daemon connections (#1116)
Connections could fail when massive payloads were transmitted.
This fixes an upstream bug in dRPC where the connection would
end with a context canceled if a message was too large.

This adds retransmission of completion and failures too. If
Coder somehow loses connection with a provisioner daemon,
upon the next connection the state will be properly reported.
2022-04-24 20:33:19 -05:00
Kyle Carberry be974cf280 feat: Add users create and list commands (#1111)
This allows for *extremely basic* user management.
2022-04-24 20:08:26 -05:00
Kyle Carberry 7496c3da81 feat: Add GitHub OAuth (#1050)
* Initial oauth

* Add Github authentication

* Add AuthMethods endpoint

* Add frontend

* Rename basic authentication to password

* Add flags for configuring GitHub auth

* Remove name from API keys

* Fix authmethods in test

* Add stories and display auth methods error
2022-04-23 22:58:57 +00:00
Kyle Carberry 3976994781 chore: Rename "start" to "server" (#1110)
Workspace commands will be aliased at the top-level, so
"start" would easily be confused with starting a workspace.

Server seems like a more appropriate name too.
2022-04-23 12:19:20 -05:00
Kyle Carberry 2a95917557 fix: Add site to release build (#1094)
This was accidentally removed when adding MacOS signing.
2022-04-20 14:06:07 -04:00
Kyle Carberry 65d77383d0 fix: Allow nested Terraform resources (#1093)
This fixes the dependency tree by adding recursion. It
now finds indirect connections and associates it with
an agent.

An example is attached which surfaced this issue.
2022-04-20 12:28:48 -05:00
Kyle Carberry e35a4fdcf0 fix: Disable Windows Defender on agent binary (#1095)
Windows (reasonably) detected our CLI as a virus due to the name
being "sshd" for VS Code support. See:
https://github.com/microsoft/vscode-remote-release/issues/5699

This disables monitoring for our binary prior to run, which
fixes our Windows example.
2022-04-20 15:01:35 +00:00
Kyle Carberry 04985a1754 fix: Close TURN connections to resolve flake (#1079) 2022-04-19 11:14:55 -05:00
Kyle Carberry c8246e3e8a feat: Add Azure instance identitity authentication (#1064)
This enables zero-trust authentication for Azure instances. Now
we support the three major clouds: AWS, Azure, and GCP 😎.
2022-04-19 13:48:13 +00:00
Kyle Carberry 1df943e010 fix: Disable TURN logs (#1061)
This was accidentally merged as part of the TURN PR. In the future
we can wrap this to provide useful output, but right now it's too
verbose.
2022-04-18 18:01:49 -05:00
Kyle Carberry d202f20fdb feat: Add TURN proxying to enable offline deployments (#1000)
* Add turnconn

* Add option for passing ICE servers

* Log TURN remote address

* Add TURN server to coder start
2022-04-18 22:40:25 +00:00
Kyle Carberry e5a1c305d3 fix: Remove quotes on GitSSH (#1043) 2022-04-18 15:12:39 -05:00
Kyle Carberry 6d948ffba2 fix: Panic if Terraform fails installation (#1056) 2022-04-18 15:11:59 -05:00
Kyle Carberry 866205c145 feat: Sign MacOS binaries (#1060)
This fixes virus warnings when launching Coder on darwin.
2022-04-18 14:57:41 -05:00
Kyle Carberry d98b7ec469 fix: Test flake for DataDog agent logs (#1026)
Sometimes the DataDog agent would fail to connect and
angrily log using the standard lib logger. This would
fail tests. See:

https://github.com/coder/coder/runs/6038192436?check_suite_focus=true
2022-04-18 12:37:01 -05:00
Kyle Carberry 6dedd0caac ci: Don't run internal steps if forked (#1048)
This was causing CI to fail for contributions.
2022-04-16 13:51:01 -04:00
Kyle Carberry 104a3c6b9c fix: Prefix tmp directory for agent download with "coder" (#1038)
This makes it easier to find the temporary dir for the coder binary.
2022-04-15 15:30:37 -05:00