69 Commits

Author SHA1 Message Date
Mathias Fredriksson 3a3537a642 refactor: rewrite develop.sh orchestrator in Go (#23054)
Replace the ~370-line bash develop.sh with a Go program using
serpent for CLI flags, errgroup for process lifecycle, and
codersdk for setup. develop.sh becomes a thin make + exec wrapper.

- Process groups for clean shutdown of child trees
- Docker template auto-creation via SDK ExampleID
- Idempotent setup (users, orgs, templates)
- Configurable --port, --web-port, --proxy-port
- Preflight runs lib.sh dependency checks
- TCP dial for port-busy checks
- Make target (build/.bin/develop) for build caching
2026-03-16 16:13:57 +02:00
Mathias Fredriksson cc6716c730 fix(scripts): allow graceful shutdown when --debug/dlv is used in develop.sh (#23023) 2026-03-13 15:40:53 +02:00
Mathias Fredriksson 2bb483b425 fix(scripts/develop.sh): handle SIGHUP and prevent SIGPIPE during shutdown (#22994)
When SSH disconnects, the output reader subshells fail writing to the
dead terminal (EIO) and exit due to set -e. This breaks the pipe to
the server, which receives SIGPIPE and dies before graceful shutdown
can stop embedded PostgreSQL.

Disable errexit in readers so they survive terminal death, add HUP
traps so the script handles SSH disconnect, and shield children from
direct SIGHUP via SIG_IGN before exec (Go resets this to caught once
signal.Notify registers). Also make fatal() exit immediately instead
of relying on async signal delivery, and remove the broken process
group kill (ppid was never a PGID).
2026-03-12 16:09:30 +02:00
Michael Suchacz 51198744ff feat(scripts): add develop.sh port flag (#22961)
## Summary
- add a `--port` flag to `scripts/develop.sh` so the API can run on a
non-default port
- make the script use the selected API port for access URL defaults,
readiness checks, login, proxy wiring, and printed URLs
- reject oversized `--port` values early and treat an existing dev
frontend on port 8080 as a conflict when the requested API is not
already running
- pin the frontend dev server to port 8080 so inherited `PORT`
environment variables do not move it to a different port

## Testing
- `bash -n scripts/develop.sh`
- `shellcheck -x scripts/develop.sh`
- `bash scripts/develop.sh --port abc`
- `bash scripts/develop.sh --port 8080`
- `bash scripts/develop.sh --port 999999999999999999999`
- started `./scripts/develop.sh --port 3001` and verified:
  - `http://127.0.0.1:3001/healthz`
  - `http://127.0.0.1:3001/api/v2/buildinfo`
  - `http://127.0.0.1:8080/healthz`
  - `http://127.0.0.1:8080/api/v2/buildinfo`
- simulated an existing dev frontend on `127.0.0.1:8080` and verified
`./scripts/develop.sh --port 3001` exits with a conflict error
2026-03-11 20:11:03 +01:00
Cian Johnston 26e8a35af0 fix(scripts): unset CODER_URL and CODER_SESSION_TOKEN for development server (#19620)
The coder-login module was recently updated to set environment variables
instead of running `coder login`.

This unfortunately broke `develop.sh`:

```
Encountered an error running "coder login", see "coder login --help" for more information
error: Trace=[create api key: ]
```

Unsetting these env vars so that they do not interfere.
2025-08-28 17:42:50 +01:00
Cian Johnston f17ab92798 chore: improve message when running develop.sh multiple times (#19333)
`develop.sh` checks for existing processes listening on port 3000 or
8080.
We can check if it's the development server to avoid confusion.

---------

Co-authored-by: Mathias Fredriksson <mafredri@gmail.com>
2025-08-13 11:49:00 +01:00
Cian Johnston 6bf2ec3eb1 chore: fix unbound variable in develop.sh (#19043)
Missed this in https://github.com/coder/coder/pull/18991
2025-07-28 09:20:35 +01:00
Cian Johnston bb83071b5f chore: override codersdk.SessionTokenCookie in develop.sh (#18991)
Updates `develop.sh`, `coder-dev.sh` and `build_go.sh` to conditionally override `codersdk.SessionTokenCookie` for usage in nested development scenario.
2025-07-23 12:48:15 +01:00
Danny Kopping f38f746f5d chore: ensure coder is logged before querying orgs (#15618) 2024-11-21 16:04:21 +01:00
Cian Johnston 593d659ec8 chore(scripts/develop.sh): auto determine first org name and run terraform init (#15603)
Updates `develop.sh` to automatically determine the name of the 'first
org' when pushing the initial template.

Also runs `terraform init` before running `coder templates push` (pet
peeve).
2024-11-20 14:01:13 +00:00
Joobi S B 7982ad7659 feat: expose premium trial form via CLI (#15054)
This PR closes https://github.com/coder/coder/issues/14856
2024-10-29 13:02:20 +00:00
Cian Johnston bcf9bc3c90 feat(cli): add --provisioner-log-debug option (#14558)
Allows starting a build in debug mode from the CLI without needing
to have the build fail first by adding `--provisioner-log-debug`.
2024-09-04 14:39:35 +01:00
Garrett Delfosse 6f20a64f9d chore: add multi-org flag to develop.sh (#13923) 2024-07-18 14:43:07 -05:00
Cian Johnston 8a3592582b feat: add "Full Name" field to user creation (#13659)
Adds the ability to specify "Full Name" (a.k.a. Name) when
creating users either via CLI or UI.
2024-06-26 09:00:42 +01:00
Cian Johnston 61db293b33 feat(scripts/develop.sh): add --debug flag to develop.sh (#12423)
Adds a `--debug` flag to `scripts/develop.sh` that will start coder under `dlv debug` instead.
You can then use e.g. the following launch snippet to connect dlv:
```
    {
      "name": "Delve Remote",
      "type": "go",
      "request": "attach",
      "mode": "remote",
      "port": 12345,
    }
```

You can also run invididual CLI commands under dlv e.g.

```
debug=1 scripts/coder-dev.sh list
```

Also sets CGO_ENABLED=0 in develop.sh by default.
2024-03-05 13:29:08 +00:00
Garrett Delfosse b21da38bea chore: deprecate template create command in favor of template push (#11390) 2024-01-05 21:04:14 +00:00
Cian Johnston 5c1ecfbd5f feat(scripts/develop.sh): provide an easy way to specify access url (#9222)
Allows `develop.sh --access-url="http://host:port"`
2023-08-21 17:23:07 +00:00
Cian Johnston 95458ac8a5 chore(scripts/develop.sh): restore original access url setting (#9174) 2023-08-18 13:24:17 +00:00
Jon Ayers 2f6687a475 feat: expose Everyone group through UI (#9117)
- Allows setting quota allowances on the 'Everyone' group.
2023-08-17 13:25:16 -05:00
Steven Masley 40f3fc3a1c feat: allow creating manual oidc/github based users (#9000)
* feat: allow creating manual oidc/github based users
* Add unit test for oidc and no login type create
2023-08-10 20:04:35 -05:00
Bruno Quaresma 2ed453035e fix: fix develop script and pnpm command (#8878) 2023-08-03 14:15:45 +00:00
Colin Adler 4b81cfaa0d chore: switch from yarn to pnpm (#8822) 2023-08-02 13:28:16 -05:00
Dean Sheather c575292ba6 fix: fix tailnet netcheck issues (#8802) 2023-08-02 01:50:43 +10:00
Cian Johnston 52b4563106 fix(scripts/develop.sh): use correct variables-file arg for template create (#8520) 2023-07-14 16:31:29 +00:00
Steven Masley 5d711fc95a chore: CORs option for yarn dev server (#7630)
* chore: Yarn dev servers require CORs headers for external proxies

Adds a flag to set CORs headers to `*` for yarn dev servers
2023-05-22 20:02:39 +02:00
Steven Masley 2624ee8f12 chore: Remove extra opt and fix 'proxy' alias (#7413)
* chore: Remove extra opt and fix 'proxy' alias
* proxy -> wsproxy
2023-05-05 13:09:04 -05:00
Steven Masley 4353ad7940 chore: Remove url and wildcard url from moon create (#7224)
* chore: Remove url and wildcard url from moon create
2023-04-20 21:09:14 -05:00
Steven Masley a5a5c4d400 chore: Add workspace proxy enterprise cli commands (#7176)
* feat: Add workspace proxy enterprise cli commands
* chore: Handle custom workspace proxy options. Remove excess
* chore: Add endpoint to register workspace proxies
2023-04-20 09:48:47 -05:00
Muhammad Atif Ali 69797add49 chore: turn on experiments while developing (#7121) 2023-04-14 17:42:03 +03:00
Cian Johnston 87fe16cde9 feat(cli): add --id parameter to templates init command (#7116)
This PR makes the following changes:

- Adds an --id parameter to coder templates init so that you can non-interactively initialize a specific example template by ID (e.g. folder name)
- Updates develop.sh and lima/coder.yaml to use this parameter to select the docker example template.
2023-04-13 15:02:49 +01:00
Bruno Quaresma 54bbed8c3c chore: Fix default password and add more docs about scripts/develop.sh (#6514) 2023-03-08 21:50:55 +00:00
Ben Potter e70b3f2973 chore: add alias helper to develop.sh (#6031)
* chore: add alias helper to develop.sh

* restore formatting

* change alias from feedback
2023-02-06 05:02:34 +00:00
Cian Johnston 56b996532f feat: add --experiments flag to replace --experimental (#5767)
- Deprecates the --experimental flag
- Adds a new flag --experiments which supports passing multiple comma-separated values or a wildcard value.
- Exposes a new endpoint /api/v2/experiments that returns the list of enabled experiments.
- Deprecates the field Features.Experimental in favour of this new API.
- Updates apidocgen to support type aliases (shoutout to @mtojek).
- Modifies apitypings to support generating slice types.
- Updates develop.sh to pass additional args after -- to $CODERD_SHIM.
2023-01-18 19:12:53 +00:00
Dean Sheather 53c456a442 feat: PGP sign the checksum file in releases (#5757) 2023-01-18 04:45:27 +10:00
Dean Sheather f1fe2b5c06 feat: add GPG forwarding to coder ssh (#5482) 2023-01-06 07:52:19 +00:00
Marcin Tojek dc6d271293 feat: Build framework for generating API docs (#5383)
* WIP

* Gen

* WIP

* chi swagger

* WIP

* WIP

* WIP

* GetWorkspaces

* GetWorkspaces

* Markdown

* Use widdershins

* WIP

* WIP

* WIP

* Markdown template

* Fix: makefile

* fmt

* Fix: comment

* Enable swagger conditionally

* fix: site

* Default false

* Flag tests

* fix

* fix

* template fixes

* Fix

* Fix

* Fix

* WIP

* Formatted

* Cleanup

* Templates

* BEGIN END SECTION

* subshell exit code

* Fix

* Fix merge

* WIP

* Fix

* Fix fmt

* Fix

* Generic api.md page

* Fix merge

* Link pages

* Fix

* Fix

* Fix: links

* Add icon

* Write manifest file

* Fix fmt

* Fix: enterprise

* Fix: Swagger.Enable

* Fix: rename apidocs to apidoc

* Fix: find -not -prune

* Fix: json not available

* Fix: rename Coderd API to Coder API

* Fix: npm exec

* Fix: api dir

* Fix: by ID

* Fix: string uuid

* Fix: include deleted

* Fix: indirect go.mod

* Fix: source lib.sh

* Fix: shellcheck

* Fix: pushd popd

* Fix: fmt

* Fix: improve workspaces

* Fix: swagger-enable

* Fix

* Fix: mention only HTTP 200

* Fix: IDs

* Fix: https

* Fix: icon

* More APis

* Fix: format swagger.json

* Fix: SwaggerEndpoint

* Fix: SCRIPT_DIR

* Fix: PROJECT_ROOT

* Fix: use code tags in schemas.md

* Fix: examples

* Fix: examples

* Fix: improve format

* Fix: date-time,enums

* Fix: include_deleted

* Fix: array of

* Fix: parameter, response

* Fix: string time or null

* Workspaces: more docs

* Workspaces: more docs

* Fix: renderDisplayName

* Fix: ActiveUserCount

* Fix

* Fix: typo

* Templates: docs

* Notice: incomplete
2022-12-19 18:43:46 +01:00
Dean Sheather 31d38d4246 feat: allow http and https listening simultaneously (#5365) 2022-12-15 20:09:19 +00:00
Mathias Fredriksson 9557d456e8 fix: Generate trial in scripts/develop.sh (#5231) 2022-12-01 17:12:16 +02:00
Mathias Fredriksson 085f1917db fix: Fix develop script pid tracking, improve logging and interrupt (#5186) 2022-11-29 15:45:14 +02:00
Mathias Fredriksson 71601f4971 fix: Fix log wrapper for vite in scripts/develop.sh (#5030)
The pid tracking refactor resulted in the pipe while echo to block the
script from continuing and showing the banner at the end. This change
redirects the stdout for the `start_cmd` to a new fd which `while` is
reading from.
2022-11-11 12:39:33 +00:00
Mathias Fredriksson 5e2253030f fix: Revert develop.sh timeout -> curl change (#5008)
It seems `--retry-all-errors` is not available on e.g. curl 7.68.0.
2022-11-10 19:49:11 +00:00
Mathias Fredriksson a25deb939b fix: Misc improvements to scripts/develop.sh (#4995)
* Use new `/healthz` endpoint for checking API liveness
* Improved credential handling/retrying in failure scenarios
* Separate site (`vite`) logs with prefix and date, additionally this
  method also disables the `vite` clearing of the screen
* Show all interfaces coder API is listening on (due to `0.0.0.0`)
* Improved shutdown procedure / interrupt handling
2022-11-10 20:47:42 +02:00
Garrett Delfosse 0f3221f9d0 fix: use more descriptive login flags (#4493) 2022-10-11 18:45:30 +00:00
Kyle Carberry 3cc77d96eb feat: Add tunnel by default (#4399)
* feat: Add tunnel by default

If an access URL is not specified, we will always tunnel.

This is from community-member feedback who exclaimed that
it's confusing having the default for `coder server` display
a warning message, and I agree.

There is very little (maybe none) in running `coder server`
without tunnel and without an access URL, so this seems like
overall a much better UX.

* Update install.sh

Co-authored-by: Ben Potter <ben@coder.com>

* Update docs/install/packages.md

Co-authored-by: Ben Potter <ben@coder.com>

* Fix reset pass test

* Fix e2e test

Co-authored-by: Ben Potter <ben@coder.com>
2022-10-07 08:05:56 -05:00
Bruno Quaresma 59cc4a2586 chore: Use Vite as main dev runner for FE (#4230) 2022-09-27 21:09:16 -03:00
Bruno Quaresma 189c562826 chore: Use Vite instead of Webpack for development (#4156) 2022-09-23 15:22:48 -03:00
Joe Previte 3db9ea9dd2 fix: disable inspect xstate in develop (#4145) 2022-09-21 11:08:54 -07:00
Steven Masley 9ab437d6e2 feat: Add serving applications on subdomains and port-based proxying (#3753)
Co-authored-by: Dean Sheather <dean@deansheather.com>
2022-09-14 03:31:33 +10:00
Steven Masley 21e8fb243b fix: Allow develop.sh to host docker workspaces (#3802) 2022-09-13 09:21:05 -04:00
Dean Sheather 6a3876d6df chore: hide template check 404 error from develop.sh (#3942) 2022-09-08 15:22:08 +10:00