From 1807b534deb781497994e8aeb3c684a730f597ab Mon Sep 17 00:00:00 2001 From: Moshe Beladev Date: Tue, 19 Jan 2021 22:25:59 +0200 Subject: [PATCH] add support for pre run command and custom build dir for CompileDaemon --- pkg/config/config.go | 2 ++ pkg/config/config_test.go | 2 ++ pkg/config/render.go | 4 +++- pkg/config/render_test.go | 1 - pkg/config/testdata/generate_dockerfile_0.golden | 1 - pkg/config/testdata/generate_dockerfile_1.golden | 1 - pkg/config/testdata/generate_dockerfile_2.golden | 7 +++++++ pkg/config/testdata/generate_dockerfile_2.in | 10 ++++++++++ pkg/config/testdata/generate_dockerfile_3.golden | 9 +++++++++ pkg/config/testdata/generate_dockerfile_3.in | 13 +++++++++++++ 10 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 pkg/config/testdata/generate_dockerfile_2.golden create mode 100644 pkg/config/testdata/generate_dockerfile_2.in create mode 100644 pkg/config/testdata/generate_dockerfile_3.golden create mode 100644 pkg/config/testdata/generate_dockerfile_3.in diff --git a/pkg/config/config.go b/pkg/config/config.go index 2bf08510..1f134d26 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -19,7 +19,9 @@ var AppFs = afero.NewOsFs() type Config struct { Name string `yaml:"name" json:"name"` OutputBinaryPath string `yaml:"output_binary" json:"outputBinary"` + PreRunCommands []string `yaml:"pre_run_commands,omitempty" json:"preRunCommands"` BuildCommand string `yaml:"build_command" json:"buildCommand"` + BuildDir string `yaml:"build_dir" json:"buildDir"` RunCommand string `yaml:"run_command" json:"runCommand"` RuntimeImage string `yaml:"runtime_image" json:"runtimeImage"` DebuggerEnabled bool `yaml:"debugger_enabled" json:"debuggerEnabled"` diff --git a/pkg/config/config_test.go b/pkg/config/config_test.go index 673c4c29..49d0c184 100644 --- a/pkg/config/config_test.go +++ b/pkg/config/config_test.go @@ -121,6 +121,7 @@ func TestConfig_Write(t *testing.T) { Name: "my-app", OutputBinaryPath: "/app", BuildCommand: "go build -o /app -gcflags=\"all=-N-l\"", + BuildDir: "/app", RunCommand: "/app", RuntimeImage: "golang:1.15.2", DebuggerPort: 40000, @@ -130,6 +131,7 @@ func TestConfig_Write(t *testing.T) { expected: `name: my-app output_binary: /app build_command: go build -o /app -gcflags="all=-N-l" +build_dir: /app run_command: /app runtime_image: golang:1.15.2 debugger_enabled: true diff --git a/pkg/config/render.go b/pkg/config/render.go index ee7b1d7d..78eb9897 100644 --- a/pkg/config/render.go +++ b/pkg/config/render.go @@ -73,6 +73,8 @@ func (c *Config) RenderDockerfile(writer io.Writer) error { RUN go get github.com/githubnemo/CompileDaemon RUN go get github.com/go-delve/delve/cmd/dlv +{{- if .PreRunCommands}}{{range .PreRunCommands}} +RUN {{.}}{{end}}{{end}} WORKDIR /src COPY . . @@ -80,6 +82,6 @@ COPY . . RUN {{.BuildCommand}} ENTRYPOINT dlv --listen=:{{.DebuggerPort}} --headless=true --api-version=2 --accept-multiclient exec {{.OutputBinaryPath}} {{- else -}} -ENTRYPOINT CompileDaemon -log-prefix=false -build="{{.BuildCommand}}" -command="{{.RunCommand}}" +ENTRYPOINT CompileDaemon -log-prefix=false -build="{{.BuildCommand}}"{{if .BuildDir }} -build-dir="{{.BuildDir}}"{{ end}} -command="{{.RunCommand}}" {{- end}}`, writer) } diff --git a/pkg/config/render_test.go b/pkg/config/render_test.go index 029a8382..c6ee4ad6 100644 --- a/pkg/config/render_test.go +++ b/pkg/config/render_test.go @@ -70,7 +70,6 @@ func TestConfig_RenderDockerfile(t *testing.T) { `FROM golang:1.15.2 RUN go get github.com/githubnemo/CompileDaemon RUN go get github.com/go-delve/delve/cmd/dlv - WORKDIR /src COPY . . diff --git a/pkg/config/testdata/generate_dockerfile_0.golden b/pkg/config/testdata/generate_dockerfile_0.golden index d785004f..790e01c4 100644 --- a/pkg/config/testdata/generate_dockerfile_0.golden +++ b/pkg/config/testdata/generate_dockerfile_0.golden @@ -1,7 +1,6 @@ FROM golang:1.15.2 RUN go get github.com/githubnemo/CompileDaemon RUN go get github.com/go-delve/delve/cmd/dlv - WORKDIR /src COPY . . diff --git a/pkg/config/testdata/generate_dockerfile_1.golden b/pkg/config/testdata/generate_dockerfile_1.golden index fc6c0077..7add4e62 100644 --- a/pkg/config/testdata/generate_dockerfile_1.golden +++ b/pkg/config/testdata/generate_dockerfile_1.golden @@ -1,7 +1,6 @@ FROM golang:1.15.2 RUN go get github.com/githubnemo/CompileDaemon RUN go get github.com/go-delve/delve/cmd/dlv - WORKDIR /src COPY . . diff --git a/pkg/config/testdata/generate_dockerfile_2.golden b/pkg/config/testdata/generate_dockerfile_2.golden new file mode 100644 index 00000000..42121416 --- /dev/null +++ b/pkg/config/testdata/generate_dockerfile_2.golden @@ -0,0 +1,7 @@ +FROM golang:1.15.2 +RUN go get github.com/githubnemo/CompileDaemon +RUN go get github.com/go-delve/delve/cmd/dlv +WORKDIR /src +COPY . . + +ENTRYPOINT CompileDaemon -log-prefix=false -build="go build -o /app" -build-dir="/src" -command="/app" \ No newline at end of file diff --git a/pkg/config/testdata/generate_dockerfile_2.in b/pkg/config/testdata/generate_dockerfile_2.in new file mode 100644 index 00000000..a2932502 --- /dev/null +++ b/pkg/config/testdata/generate_dockerfile_2.in @@ -0,0 +1,10 @@ +name: my-app +output_binary: /app +build_command: go build -o {{.output_binary}} +build_dir: /src +runtime_image: golang:1.15.2 +run_command: '{{.output_binary}}' +debugger_port: 40000 +debugger_enabled: false +expose_ports: + - 8080 \ No newline at end of file diff --git a/pkg/config/testdata/generate_dockerfile_3.golden b/pkg/config/testdata/generate_dockerfile_3.golden new file mode 100644 index 00000000..beec01f1 --- /dev/null +++ b/pkg/config/testdata/generate_dockerfile_3.golden @@ -0,0 +1,9 @@ +FROM golang:1.15.2 +RUN go get github.com/githubnemo/CompileDaemon +RUN go get github.com/go-delve/delve/cmd/dlv +RUN echo "hello" && echo "world" +RUN ls +WORKDIR /src +COPY . . + +ENTRYPOINT CompileDaemon -log-prefix=false -build="go build -o /app" -build-dir="/src" -command="/app" \ No newline at end of file diff --git a/pkg/config/testdata/generate_dockerfile_3.in b/pkg/config/testdata/generate_dockerfile_3.in new file mode 100644 index 00000000..9e311b22 --- /dev/null +++ b/pkg/config/testdata/generate_dockerfile_3.in @@ -0,0 +1,13 @@ +name: my-app +output_binary: /app +pre_run_commands: + - echo "hello" && echo "world" + - ls +build_command: go build -o {{.output_binary}} +build_dir: /src +runtime_image: golang:1.15.2 +run_command: '{{.output_binary}}' +debugger_port: 40000 +debugger_enabled: false +expose_ports: + - 8080 \ No newline at end of file