From 05226634fd2b235038ece06ce112ea20fcafccf0 Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Mon, 8 Jun 2020 23:26:43 -0400 Subject: [PATCH 1/5] Report CNB_APP_DIR as WORKDIR for buildpacks projects --- pkg/skaffold/debug/cnb.go | 10 ++++++++++ pkg/skaffold/debug/cnb_test.go | 28 ++++++++++++++++++++-------- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/pkg/skaffold/debug/cnb.go b/pkg/skaffold/debug/cnb.go index f07e0e812ce..faaa2d26896 100644 --- a/pkg/skaffold/debug/cnb.go +++ b/pkg/skaffold/debug/cnb.go @@ -71,6 +71,16 @@ func updateForCNBImage(container *v1.Container, ic imageConfiguration, transform // The buildpacks launcher is retained as the entrypoint ic, rewriter := adjustCommandLine(m, ic) + + // + if container.WorkingDir == "" { + if appDir := ic.env["CNB_APP_DIR"]; appDir != "" { + container.WorkingDir = appDir + } else { + container.WorkingDir = "/workspace" + } + } + c, img, err := transformer(container, ic) // Only rewrite the container.Args if set: some transforms only alter env vars, diff --git a/pkg/skaffold/debug/cnb_test.go b/pkg/skaffold/debug/cnb_test.go index 3527d85ad6e..bbfea09a062 100644 --- a/pkg/skaffold/debug/cnb_test.go +++ b/pkg/skaffold/debug/cnb_test.go @@ -64,49 +64,61 @@ func TestUpdateForCNBImage(t *testing.T) { description: "direct command-lines are rewritten as direct command-lines", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, arguments: []string{"--", "web", "arg1", "arg2"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"--", "web", "arg1", "arg2"}}, + expected: v1.Container{Args: []string{"--", "web", "arg1", "arg2"}, WorkingDir: "/workspace"}, }, { description: "defaults to web process when no process type", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, }, { description: "resolves to default 'web' process", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=web", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "web"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=diag", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "diag"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"diagProcess"}}, + expected: v1.Container{Args: []string{"diagProcess"}, WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=direct", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "direct"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"--", "command", "cmdArg1"}}, + expected: v1.Container{Args: []string{"--", "command", "cmdArg1"}, WorkingDir: "/workspace"}, }, { description: "script command-line", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, arguments: []string{"python main.py"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"python main.py"}}, + expected: v1.Container{Args: []string{"python main.py"}, WorkingDir: "/workspace"}, }, { description: "no process and no args", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}}, shouldErr: false, - expected: v1.Container{}, + expected: v1.Container{WorkingDir: "/workspace"}, + }, + { + description: "launcher ignores image's working dir", + input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}, workingDir: "/workdir"}, + shouldErr: false, + expected: v1.Container{WorkingDir: "/workspace"}, + }, + { + description: "CNB_APP_DIR used if set", + input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}, env: map[string]string{"CNB_APP_DIR":"/appDir"}, workingDir: "/workdir"}, + shouldErr: false, + expected: v1.Container{WorkingDir: "/appDir"}, }, } for _, test := range tests { From 52495494876991dd8e8e0267351d2b9b94d719fc Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Mon, 15 Jun 2020 15:56:13 -0400 Subject: [PATCH 2/5] Cause transforms to set the working directory in the debug config --- pkg/skaffold/debug/cnb.go | 12 ++++---- pkg/skaffold/debug/cnb_test.go | 40 ++++++++++++++++--------- pkg/skaffold/debug/transform.go | 5 +++- pkg/skaffold/debug/transform_go.go | 5 ++-- pkg/skaffold/debug/transform_go_test.go | 4 +-- pkg/skaffold/debug/transform_jvm.go | 5 ++-- pkg/skaffold/debug/transform_nodejs.go | 5 ++-- pkg/skaffold/debug/transform_python.go | 5 ++-- 8 files changed, 49 insertions(+), 32 deletions(-) diff --git a/pkg/skaffold/debug/cnb.go b/pkg/skaffold/debug/cnb.go index faaa2d26896..199d6b67665 100644 --- a/pkg/skaffold/debug/cnb.go +++ b/pkg/skaffold/debug/cnb.go @@ -72,13 +72,11 @@ func updateForCNBImage(container *v1.Container, ic imageConfiguration, transform // The buildpacks launcher is retained as the entrypoint ic, rewriter := adjustCommandLine(m, ic) - // - if container.WorkingDir == "" { - if appDir := ic.env["CNB_APP_DIR"]; appDir != "" { - container.WorkingDir = appDir - } else { - container.WorkingDir = "/workspace" - } + // CNB launcher uses /workspace and ignores the image's working directory + if appDir := ic.env["CNB_APP_DIR"]; appDir != "" { + ic.workingDir = appDir + } else { + ic.workingDir = "/workspace" } c, img, err := transformer(container, ic) diff --git a/pkg/skaffold/debug/cnb_test.go b/pkg/skaffold/debug/cnb_test.go index bbfea09a062..df0ad88235a 100644 --- a/pkg/skaffold/debug/cnb_test.go +++ b/pkg/skaffold/debug/cnb_test.go @@ -49,6 +49,7 @@ func TestUpdateForCNBImage(t *testing.T) { input imageConfiguration shouldErr bool expected v1.Container + config ContainerDebugConfiguration }{ { description: "error when missing build.metadata", @@ -64,61 +65,71 @@ func TestUpdateForCNBImage(t *testing.T) { description: "direct command-lines are rewritten as direct command-lines", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, arguments: []string{"--", "web", "arg1", "arg2"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"--", "web", "arg1", "arg2"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"--", "web", "arg1", "arg2"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "defaults to web process when no process type", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "resolves to default 'web' process", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=web", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "web"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"webProcess", "webArg1", "webArg2"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=diag", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "diag"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"diagProcess"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"diagProcess"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "CNB_PROCESS_TYPE=direct", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, env: map[string]string{"CNB_PROCESS_TYPE": "direct"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"--", "command", "cmdArg1"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"--", "command", "cmdArg1"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "script command-line", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, arguments: []string{"python main.py"}, labels: map[string]string{"io.buildpacks.build.metadata": mdJSON}}, shouldErr: false, - expected: v1.Container{Args: []string{"python main.py"}, WorkingDir: "/workspace"}, + expected: v1.Container{Args: []string{"python main.py"}}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "no process and no args", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}}, shouldErr: false, - expected: v1.Container{WorkingDir: "/workspace"}, + expected: v1.Container{}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "launcher ignores image's working dir", input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}, workingDir: "/workdir"}, shouldErr: false, - expected: v1.Container{WorkingDir: "/workspace"}, + expected: v1.Container{}, + config: ContainerDebugConfiguration{WorkingDir: "/workspace"}, }, { description: "CNB_APP_DIR used if set", - input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}, env: map[string]string{"CNB_APP_DIR":"/appDir"}, workingDir: "/workdir"}, + input: imageConfiguration{entrypoint: []string{"/cnb/lifecycle/launcher"}, labels: map[string]string{"io.buildpacks.build.metadata": mdndJSON}, env: map[string]string{"CNB_APP_DIR": "/appDir"}, workingDir: "/workdir"}, shouldErr: false, - expected: v1.Container{WorkingDir: "/appDir"}, + expected: v1.Container{}, + config: ContainerDebugConfiguration{WorkingDir: "/appDir"}, }, } for _, test := range tests { @@ -127,17 +138,18 @@ func TestUpdateForCNBImage(t *testing.T) { testutil.Run(t, test.description+" (args changed)", func(t *testutil.T) { argsChangedTransform := func(c *v1.Container, ic imageConfiguration) (ContainerDebugConfiguration, string, error) { c.Args = ic.arguments - return ContainerDebugConfiguration{}, "", nil + return ContainerDebugConfiguration{WorkingDir: ic.workingDir}, "", nil } copy := v1.Container{} - _, _, err := updateForCNBImage(©, test.input, argsChangedTransform) + c, _, err := updateForCNBImage(©, test.input, argsChangedTransform) t.CheckErrorAndDeepEqual(test.shouldErr, err, test.expected, copy) + t.CheckErrorAndDeepEqual(test.shouldErr, err, test.config, c) }) // Test that when the arguments are left unchanged, that the container is unchanged testutil.Run(t, test.description+" (args unchanged)", func(t *testutil.T) { argsUnchangedTransform := func(c *v1.Container, ic imageConfiguration) (ContainerDebugConfiguration, string, error) { - return ContainerDebugConfiguration{}, "", nil + return ContainerDebugConfiguration{WorkingDir: ic.workingDir}, "", nil } copy := v1.Container{} diff --git a/pkg/skaffold/debug/transform.go b/pkg/skaffold/debug/transform.go index 90aca660199..c95d7d518de 100644 --- a/pkg/skaffold/debug/transform.go +++ b/pkg/skaffold/debug/transform.go @@ -66,6 +66,7 @@ import ( ) // ContainerDebugConfiguration captures debugging information for a specific container. +// This structure is serialized out and included in the pod metadata. type ContainerDebugConfiguration struct { // Artifact is the corresponding artifact's image name used in the skaffold.yaml Artifact string `json:"artifact,omitempty"` @@ -222,7 +223,9 @@ func transformPodSpec(metadata *metav1.ObjectMeta, podSpec *v1.PodSpec, retrieve // `err != nil` means that the container did not or could not be transformed if configuration, requiredImage, err := transformContainer(container, imageConfig, portAlloc); err == nil { configuration.Artifact = imageConfig.artifact - configuration.WorkingDir = imageConfig.workingDir + if configuration.WorkingDir == "" { + configuration.WorkingDir = imageConfig.workingDir + } configurations[container.Name] = configuration if len(requiredImage) > 0 { logrus.Infof("%q requires debugging support image %q", container.Name, requiredImage) diff --git a/pkg/skaffold/debug/transform_go.go b/pkg/skaffold/debug/transform_go.go index 53a139f5d24..8455a9447cc 100644 --- a/pkg/skaffold/debug/transform_go.go +++ b/pkg/skaffold/debug/transform_go.go @@ -116,8 +116,9 @@ func (t dlvTransformer) Apply(container *v1.Container, config imageConfiguration container.Ports = exposePort(container.Ports, "dlv", int32(spec.port)) return ContainerDebugConfiguration{ - Runtime: "go", - Ports: map[string]uint32{"dlv": uint32(spec.port)}, + Runtime: "go", + Ports: map[string]uint32{"dlv": uint32(spec.port)}, + WorkingDir: config.workingDir, }, "go", nil } diff --git a/pkg/skaffold/debug/transform_go_test.go b/pkg/skaffold/debug/transform_go_test.go index 357ef764dc6..ccb4ea3b049 100644 --- a/pkg/skaffold/debug/transform_go_test.go +++ b/pkg/skaffold/debug/transform_go_test.go @@ -135,12 +135,12 @@ func TestDlvTransformerApply(t *testing.T) { { description: "basic", containerSpec: v1.Container{}, - configuration: imageConfiguration{entrypoint: []string{"app", "arg"}}, + configuration: imageConfiguration{entrypoint: []string{"app", "arg"}, workingDir: "/root"}, result: v1.Container{ Command: []string{"/dbg/go/bin/dlv", "exec", "--headless", "--continue", "--accept-multiclient", "--listen=:56268", "--api-version=2", "app", "--", "arg"}, Ports: []v1.ContainerPort{{Name: "dlv", ContainerPort: 56268}}, }, - debugConfig: ContainerDebugConfiguration{Runtime: "go", Ports: map[string]uint32{"dlv": 56268}}, + debugConfig: ContainerDebugConfiguration{Runtime: "go", Ports: map[string]uint32{"dlv": 56268}, WorkingDir: "/root"}, image: "go", }, { diff --git a/pkg/skaffold/debug/transform_jvm.go b/pkg/skaffold/debug/transform_jvm.go index ec3e412dc86..519160833ce 100644 --- a/pkg/skaffold/debug/transform_jvm.go +++ b/pkg/skaffold/debug/transform_jvm.go @@ -85,8 +85,9 @@ func (t jdwpTransformer) Apply(container *v1.Container, config imageConfiguratio container.Ports = exposePort(container.Ports, "jdwp", port) return ContainerDebugConfiguration{ - Runtime: "jvm", - Ports: map[string]uint32{"jdwp": uint32(port)}, + Runtime: "jvm", + Ports: map[string]uint32{"jdwp": uint32(port)}, + WorkingDir: config.workingDir, }, "", nil } diff --git a/pkg/skaffold/debug/transform_nodejs.go b/pkg/skaffold/debug/transform_nodejs.go index 1f4afc9f2fd..c8134eb9e27 100644 --- a/pkg/skaffold/debug/transform_nodejs.go +++ b/pkg/skaffold/debug/transform_nodejs.go @@ -126,8 +126,9 @@ func (t nodeTransformer) Apply(container *v1.Container, config imageConfiguratio }) return ContainerDebugConfiguration{ - Runtime: "nodejs", - Ports: map[string]uint32{"devtools": uint32(spec.port)}, + Runtime: "nodejs", + Ports: map[string]uint32{"devtools": uint32(spec.port)}, + WorkingDir: config.workingDir, }, "nodejs", nil } diff --git a/pkg/skaffold/debug/transform_python.go b/pkg/skaffold/debug/transform_python.go index 6bf6fe49e90..44aa0d52ad7 100644 --- a/pkg/skaffold/debug/transform_python.go +++ b/pkg/skaffold/debug/transform_python.go @@ -93,8 +93,9 @@ func (t pythonTransformer) Apply(container *v1.Container, config imageConfigurat container.Ports = exposePort(container.Ports, "dap", spec.port) return ContainerDebugConfiguration{ - Runtime: "python", - Ports: map[string]uint32{"dap": uint32(spec.port)}, + Runtime: "python", + Ports: map[string]uint32{"dap": uint32(spec.port)}, + WorkingDir: config.workingDir, }, "python", nil } From 1c92e3f2b46382fab0e801382b9f1bb81d879a13 Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Mon, 15 Jun 2020 16:41:32 -0400 Subject: [PATCH 3/5] tweak comment --- pkg/skaffold/debug/cnb.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/skaffold/debug/cnb.go b/pkg/skaffold/debug/cnb.go index 199d6b67665..8b97ad58d7b 100644 --- a/pkg/skaffold/debug/cnb.go +++ b/pkg/skaffold/debug/cnb.go @@ -69,10 +69,10 @@ func updateForCNBImage(container *v1.Container, ic imageConfiguration, transform return ContainerDebugConfiguration{}, "", fmt.Errorf("buildpacks metadata has no processes") } - // The buildpacks launcher is retained as the entrypoint + // The CNB launcher is retained as the entrypoint. ic, rewriter := adjustCommandLine(m, ic) - // CNB launcher uses /workspace and ignores the image's working directory + // The CNB launcher uses CNB_APP_DIR (defaults to /workspace) and ignores the image's working directory. if appDir := ic.env["CNB_APP_DIR"]; appDir != "" { ic.workingDir = appDir } else { From e2bd7e722b35f67ea4945043b3d4c65959ce3107 Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Mon, 15 Jun 2020 17:09:28 -0400 Subject: [PATCH 4/5] Backout unnecessary changes to transforms --- pkg/skaffold/debug/transform_go.go | 5 ++--- pkg/skaffold/debug/transform_go_test.go | 4 ++-- pkg/skaffold/debug/transform_jvm.go | 5 ++--- pkg/skaffold/debug/transform_nodejs.go | 5 ++--- pkg/skaffold/debug/transform_python.go | 5 ++--- 5 files changed, 10 insertions(+), 14 deletions(-) diff --git a/pkg/skaffold/debug/transform_go.go b/pkg/skaffold/debug/transform_go.go index 8455a9447cc..53a139f5d24 100644 --- a/pkg/skaffold/debug/transform_go.go +++ b/pkg/skaffold/debug/transform_go.go @@ -116,9 +116,8 @@ func (t dlvTransformer) Apply(container *v1.Container, config imageConfiguration container.Ports = exposePort(container.Ports, "dlv", int32(spec.port)) return ContainerDebugConfiguration{ - Runtime: "go", - Ports: map[string]uint32{"dlv": uint32(spec.port)}, - WorkingDir: config.workingDir, + Runtime: "go", + Ports: map[string]uint32{"dlv": uint32(spec.port)}, }, "go", nil } diff --git a/pkg/skaffold/debug/transform_go_test.go b/pkg/skaffold/debug/transform_go_test.go index ccb4ea3b049..357ef764dc6 100644 --- a/pkg/skaffold/debug/transform_go_test.go +++ b/pkg/skaffold/debug/transform_go_test.go @@ -135,12 +135,12 @@ func TestDlvTransformerApply(t *testing.T) { { description: "basic", containerSpec: v1.Container{}, - configuration: imageConfiguration{entrypoint: []string{"app", "arg"}, workingDir: "/root"}, + configuration: imageConfiguration{entrypoint: []string{"app", "arg"}}, result: v1.Container{ Command: []string{"/dbg/go/bin/dlv", "exec", "--headless", "--continue", "--accept-multiclient", "--listen=:56268", "--api-version=2", "app", "--", "arg"}, Ports: []v1.ContainerPort{{Name: "dlv", ContainerPort: 56268}}, }, - debugConfig: ContainerDebugConfiguration{Runtime: "go", Ports: map[string]uint32{"dlv": 56268}, WorkingDir: "/root"}, + debugConfig: ContainerDebugConfiguration{Runtime: "go", Ports: map[string]uint32{"dlv": 56268}}, image: "go", }, { diff --git a/pkg/skaffold/debug/transform_jvm.go b/pkg/skaffold/debug/transform_jvm.go index 519160833ce..ec3e412dc86 100644 --- a/pkg/skaffold/debug/transform_jvm.go +++ b/pkg/skaffold/debug/transform_jvm.go @@ -85,9 +85,8 @@ func (t jdwpTransformer) Apply(container *v1.Container, config imageConfiguratio container.Ports = exposePort(container.Ports, "jdwp", port) return ContainerDebugConfiguration{ - Runtime: "jvm", - Ports: map[string]uint32{"jdwp": uint32(port)}, - WorkingDir: config.workingDir, + Runtime: "jvm", + Ports: map[string]uint32{"jdwp": uint32(port)}, }, "", nil } diff --git a/pkg/skaffold/debug/transform_nodejs.go b/pkg/skaffold/debug/transform_nodejs.go index c8134eb9e27..1f4afc9f2fd 100644 --- a/pkg/skaffold/debug/transform_nodejs.go +++ b/pkg/skaffold/debug/transform_nodejs.go @@ -126,9 +126,8 @@ func (t nodeTransformer) Apply(container *v1.Container, config imageConfiguratio }) return ContainerDebugConfiguration{ - Runtime: "nodejs", - Ports: map[string]uint32{"devtools": uint32(spec.port)}, - WorkingDir: config.workingDir, + Runtime: "nodejs", + Ports: map[string]uint32{"devtools": uint32(spec.port)}, }, "nodejs", nil } diff --git a/pkg/skaffold/debug/transform_python.go b/pkg/skaffold/debug/transform_python.go index 44aa0d52ad7..6bf6fe49e90 100644 --- a/pkg/skaffold/debug/transform_python.go +++ b/pkg/skaffold/debug/transform_python.go @@ -93,9 +93,8 @@ func (t pythonTransformer) Apply(container *v1.Container, config imageConfigurat container.Ports = exposePort(container.Ports, "dap", spec.port) return ContainerDebugConfiguration{ - Runtime: "python", - Ports: map[string]uint32{"dap": uint32(spec.port)}, - WorkingDir: config.workingDir, + Runtime: "python", + Ports: map[string]uint32{"dap": uint32(spec.port)}, }, "python", nil } From 46f9de3d38579d88b13051afbd85a546ce32f868 Mon Sep 17 00:00:00 2001 From: Brian de Alwis Date: Tue, 16 Jun 2020 11:17:15 -0400 Subject: [PATCH 5/5] gofmt --- pkg/skaffold/debug/cnb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/skaffold/debug/cnb.go b/pkg/skaffold/debug/cnb.go index 8b97ad58d7b..1e566066c22 100644 --- a/pkg/skaffold/debug/cnb.go +++ b/pkg/skaffold/debug/cnb.go @@ -71,7 +71,7 @@ func updateForCNBImage(container *v1.Container, ic imageConfiguration, transform // The CNB launcher is retained as the entrypoint. ic, rewriter := adjustCommandLine(m, ic) - + // The CNB launcher uses CNB_APP_DIR (defaults to /workspace) and ignores the image's working directory. if appDir := ic.env["CNB_APP_DIR"]; appDir != "" { ic.workingDir = appDir