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.
This commit is contained in:
Cian Johnston 2024-03-05 13:29:08 +00:00 committed by GitHub
parent 8585863d0e
commit 61db293b33
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 3 deletions

View File

@ -10,6 +10,7 @@ source "${SCRIPT_DIR}/lib.sh"
GOOS="$(go env GOOS)" GOOS="$(go env GOOS)"
GOARCH="$(go env GOARCH)" GOARCH="$(go env GOARCH)"
DEBUG_DELVE="${DEBUG_DELVE:-0}"
BINARY_TYPE=coder-slim BINARY_TYPE=coder-slim
if [[ ${1:-} == server ]]; then if [[ ${1:-} == server ]]; then
BINARY_TYPE=coder BINARY_TYPE=coder
@ -55,4 +56,10 @@ coder)
;; ;;
esac esac
exec "${CODER_DEV_BIN}" --global-config "${CODER_DEV_DIR}" "$@" runcmd=("${CODER_DEV_BIN}")
if [[ "${DEBUG_DELVE}" == 1 ]]; then
set -x
runcmd=(dlv debug --headless --continue --listen 127.0.0.1:12345 --accept-multiclient ./cmd/coder --)
fi
CGO_ENABLED=0 exec "${runcmd[@]}" --global-config "${CODER_DEV_DIR}" "$@"

View File

@ -14,11 +14,12 @@ source "${SCRIPT_DIR}/lib.sh"
set -euo pipefail set -euo pipefail
CODER_DEV_ACCESS_URL="${CODER_DEV_ACCESS_URL:-http://127.0.0.1:3000}" CODER_DEV_ACCESS_URL="${CODER_DEV_ACCESS_URL:-http://127.0.0.1:3000}"
debug=0
DEFAULT_PASSWORD="SomeSecurePassword!" DEFAULT_PASSWORD="SomeSecurePassword!"
password="${CODER_DEV_ADMIN_PASSWORD:-${DEFAULT_PASSWORD}}" password="${CODER_DEV_ADMIN_PASSWORD:-${DEFAULT_PASSWORD}}"
use_proxy=0 use_proxy=0
args="$(getopt -o "" -l access-url:,use-proxy,agpl,password: -- "$@")" args="$(getopt -o "" -l access-url:,use-proxy,agpl,debug,password: -- "$@")"
eval set -- "$args" eval set -- "$args"
while true; do while true; do
case "$1" in case "$1" in
@ -38,6 +39,10 @@ while true; do
use_proxy=1 use_proxy=1
shift shift
;; ;;
--debug)
debug=1
shift
;;
--) --)
shift shift
break break
@ -136,7 +141,7 @@ fatal() {
trap 'fatal "Script encountered an error"' ERR trap 'fatal "Script encountered an error"' ERR
cdroot cdroot
start_cmd API "" "${CODER_DEV_SHIM}" server --http-address 0.0.0.0:3000 --swagger-enable --access-url "${CODER_DEV_ACCESS_URL}" --dangerous-allow-cors-requests=true "$@" DEBUG_DELVE="${debug}" start_cmd API "" "${CODER_DEV_SHIM}" server --http-address 0.0.0.0:3000 --swagger-enable --access-url "${CODER_DEV_ACCESS_URL}" --dangerous-allow-cors-requests=true "$@"
echo '== Waiting for Coder to become ready' echo '== Waiting for Coder to become ready'
# Start the timeout in the background so interrupting this script # Start the timeout in the background so interrupting this script