From cc5d010204e94b74189b89db8ad968b88f0238eb Mon Sep 17 00:00:00 2001 From: "Stanislav N. aka pztrn" Date: Mon, 15 Sep 2025 17:22:59 +0500 Subject: [PATCH] Improve debug configuration. --- .vscode/launch.json | 5 +++-- .vscode/tasks.json | 17 +++++++++++++++-- server/Dockerfile.debug | 6 ++++-- server/cmd/bunkerd/Taskfile.yml | 18 ++++++++++++++++++ server/localdevzone/bunkerd/Taskfile.yml | 4 ++-- 5 files changed, 42 insertions(+), 8 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 6eb65d0..12271d8 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -16,10 +16,11 @@ "substitutePath": [ { "from": "${workspaceFolder}", - "to": "bunker" + "to": "/bunkerd/" } ], - "preLaunchTask": "Run bunkerd debug build" + "preLaunchTask": "Run bunkerd debug build", + "postDebugTask": "Stop bunkerd debug build" } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 8a15af1..62bdcb3 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -4,9 +4,22 @@ { "label": "Run bunkerd debug build", "type": "shell", - "command": "task server:localdev:bunkerd:stop; task server:localdev:bunkerd:build-debug && task server:localdev:bunkerd:restart-debug", + "command": "task server:localdev:bunkerd:down; task server:localdev:bunkerd:up-debug", "group": { - "kind": "test", + "kind": "build", + "isDefault": true + }, + "presentation": { + // Do not open terminal every time debug is launched. + "reveal": "silent" + } + }, + { + "label": "Stop bunkerd debug build", + "type": "shell", + "command": "task server:localdev:bunkerd:down-debug", + "group": { + "kind": "build", "isDefault": true }, "presentation": { diff --git a/server/Dockerfile.debug b/server/Dockerfile.debug index 1818c55..2fba605 100644 --- a/server/Dockerfile.debug +++ b/server/Dockerfile.debug @@ -2,15 +2,17 @@ FROM code.pztrn.name/containers/go-toolbox:v8 AS build WORKDIR /bunkerd COPY . /bunkerd -RUN --mount=type=cache,target="/home/container/go" task server:cmd:bunkerd:build --force +RUN --mount=type=cache,target="/home/container/go" GOFLAGS="" task server:cmd:bunkerd:build-debug --force FROM debian:13-slim RUN apt-get update && \ - apt-get install -y ca-certificates iputils-ping coreutils && \ + apt-get install -y ca-certificates iputils-ping coreutils curl net-tools && \ rm -rf /var/lib/apt/* /var/cache/apt/* COPY --from=build /bunkerd/_build/bunkerd /bunkerd COPY --from=build /usr/local/bin/dlv /dlv +HEALTHCHECK --interval=1s --timeout=10s --start-period=1s --retries=3 CMD netstat -an | grep 4000 > /dev/null; if [ 0 != $? ]; then exit 1; fi; + ENTRYPOINT ["/dlv", "--listen=:4000", "--headless=true", "--log=true", "--accept-multiclient", "--api-version=2", "exec", "/bunkerd"] diff --git a/server/cmd/bunkerd/Taskfile.yml b/server/cmd/bunkerd/Taskfile.yml index 093a1f7..bd3272e 100644 --- a/server/cmd/bunkerd/Taskfile.yml +++ b/server/cmd/bunkerd/Taskfile.yml @@ -20,6 +20,24 @@ tasks: - ./_build/bunkerd{{exeExt}} method: timestamp + build-debug: + desc: "Builds bunkerd binary." + cmds: + - task: :::ensure-builddir + - task: cleanup + - go build -ldflags="{{ .BASIC_LDFLAGS }}" --gcflags "all=-N -l" -o _build/bunkerd{{exeExt}} ./server/cmd/bunkerd/main.go + sources: + - ./Taskfile.yml + - ./go.mod + - ./commons/* + - ./server/**/*.go + - ./server/Taskfile.yml + - ./server/**/Taskfile.yml + - ./server/entrypoint.sh + generates: + - ./_build/bunkerd{{exeExt}} + method: timestamp + cleanup: desc: "Deletes bunkerd binary from local build cache." cmds: diff --git a/server/localdevzone/bunkerd/Taskfile.yml b/server/localdevzone/bunkerd/Taskfile.yml index 6f1f3b4..76da0c9 100644 --- a/server/localdevzone/bunkerd/Taskfile.yml +++ b/server/localdevzone/bunkerd/Taskfile.yml @@ -87,5 +87,5 @@ tasks: dir: "./server/localdevzone/bunkerd" cmds: - task: :common:network-up - - task: build - - docker compose -p bunkerd-debug -f docker-compose.debug.yaml up -d + - task: build-debug + - docker compose -p bunkerd-debug -f docker-compose.debug.yaml up -d --wait