Skip to content

Commit

Permalink
feat(go): support Go 1.20 and Delve 1.20.1 (#126)
Browse files Browse the repository at this point in the history
* Update to delve 1.20 and go1.20.

* Add tests for go120.

* Add quotes to avoid truncating trailing 0.
  • Loading branch information
sethrylan authored Mar 23, 2023
1 parent 56a4d5b commit 32da851
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 3 deletions.
6 changes: 3 additions & 3 deletions go/helper-image/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
ARG GOVERSION=1.19
ARG GOVERSION=1.20
FROM --platform=$BUILDPLATFORM golang:${GOVERSION} as delve
ARG BUILDPLATFORM
ARG TARGETOS
ARG TARGETARCH

ARG DELVE_VERSION=1.9.1
ARG DELVE_VERSION=1.20.1

# Patch delve to make defaults for --check-go-version and --only-same-user
# to be set at build time. We must install patch(1) to apply the patch.
#
# We default --check-go-version to false to support binaries compiled
# with unsupported versions of Go. Delve issues a prominent warning.
#
#
# We default --only-same-user to false as `kubectl port-forward`
# to dlv port is refused otherwise.
RUN apt-get update && apt-get install -y --no-install-recommends \
Expand Down
9 changes: 9 additions & 0 deletions go/skaffold.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,14 @@ profiles:
docker:
buildArgs:
GOVERSION: 1.19
- op: add
path: /build/artifacts/-
value:
image: go120app
context: test/goapp
docker:
buildArgs:
GOVERSION: '1.20'
deploy:
kubectl:
manifests:
Expand All @@ -104,6 +112,7 @@ profiles:
- test/k8s-test-go117.yaml
- test/k8s-test-go118.yaml
- test/k8s-test-go119.yaml
- test/k8s-test-go120.yaml

# release: pushes images to production with :latest
- name: release
Expand Down
89 changes: 89 additions & 0 deletions go/test/k8s-test-go120.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
# This test approximates `skaffold debug` for a go app.
apiVersion: v1
kind: Pod
metadata:
name: go120pod
labels:
app: hello
protocol: dlv
runtime: go120
spec:
containers:
- name: go120app
image: go120app
args:
- /dbg/go/bin/dlv
- exec
- --log
- --headless
- --continue
- --accept-multiclient
# listen on 0.0.0.0 as it is exposed as a service
- --listen=0.0.0.0:56286
- --api-version=2
- ./app
ports:
- containerPort: 8080
- containerPort: 56286
name: dlv
readinessProbe:
httpGet:
path: /
port: 8080
volumeMounts:
- mountPath: /dbg
name: go-debugging-support
initContainers:
- image: skaffold-debug-go
name: install-go-support
resources: {}
volumeMounts:
- mountPath: /dbg
name: go-debugging-support
volumes:
- emptyDir: {}
name: go-debugging-support

---
apiVersion: v1
kind: Service
metadata:
name: hello-dlv-go120
spec:
ports:
- name: http
port: 8080
protocol: TCP
- name: dlv
port: 56286
protocol: TCP
selector:
app: hello
protocol: dlv
runtime: go120

---
apiVersion: batch/v1
kind: Job
metadata:
name: connect-to-go120
labels:
project: container-debug-support
type: integration-test
spec:
ttlSecondsAfterFinished: 10
backoffLimit: 1
template:
spec:
restartPolicy: Never
initContainers:
- name: wait-for-go120
image: kubectl
command: [sh, -c, "while ! curl -s hello-dlv-go120:8080 2>/dev/null; do echo waiting for app; sleep 1; done"]
containers:
- name: dlv-to-go120
image: skaffold-debug-go
command: [sh, -c, '
(echo bt; echo exit -c) > init.txt;
set -x;
/duct-tape/go/bin/dlv connect --init init.txt hello-dlv-go120:56286']

0 comments on commit 32da851

Please sign in to comment.