From 729013ae9176c8b6bc3fadd6f49f2d936e2fce90 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Wed, 12 Jan 2022 14:00:39 -0700 Subject: [PATCH 1/4] rename engine.#Build to engine.#Dockerfile Signed-off-by: Richard Jones --- pkg/dagger.io/dagger/engine/image.cue | 5 ++--- plan/task/{build.go => dockerfile.go} | 10 +++++----- tests/tasks.bats | 6 +++--- tests/tasks/copy/cue.mod/pkg/.gitignore | 1 + tests/tasks/{build => dockerfile}/build_args.cue | 2 +- tests/tasks/{build => dockerfile}/build_auth.cue | 0 tests/tasks/{build => dockerfile}/cue.mod/module.cue | 0 .../tasks/{build => dockerfile}/cue.mod/pkg/.gitignore | 0 tests/tasks/{build => dockerfile}/dockerfile.cue | 2 +- tests/tasks/{build => dockerfile}/dockerfile_path.cue | 2 +- tests/tasks/{build => dockerfile}/image_config.cue | 2 +- .../tasks/{build => dockerfile}/inlined_dockerfile.cue | 2 +- tests/tasks/{build => dockerfile}/labels.cue | 2 +- tests/tasks/{build => dockerfile}/platform.cue | 2 +- tests/tasks/{build => dockerfile}/testdata/Dockerfile | 0 .../testdata/dockerfilepath/Dockerfile.custom | 0 tests/tasks/{build => dockerfile}/testdata/foo | 0 tests/tasks/exec/cue.mod/pkg/.gitignore | 1 + tests/tasks/mkdir/cue.mod/pkg/.gitignore | 1 + tests/tasks/pull/cue.mod/pkg/.gitignore | 1 + tests/tasks/readfile/cue.mod/pkg/.gitignore | 1 + tests/tasks/scratch/cue.mod/pkg/.gitignore | 1 + tests/tasks/writefile/cue.mod/pkg/.gitignore | 1 + 23 files changed, 24 insertions(+), 18 deletions(-) rename plan/task/{build.go => dockerfile.go} (90%) rename tests/tasks/{build => dockerfile}/build_args.cue (90%) rename tests/tasks/{build => dockerfile}/build_auth.cue (100%) rename tests/tasks/{build => dockerfile}/cue.mod/module.cue (100%) rename tests/tasks/{build => dockerfile}/cue.mod/pkg/.gitignore (100%) rename tests/tasks/{build => dockerfile}/dockerfile.cue (90%) rename tests/tasks/{build => dockerfile}/dockerfile_path.cue (91%) rename tests/tasks/{build => dockerfile}/image_config.cue (94%) rename tests/tasks/{build => dockerfile}/inlined_dockerfile.cue (98%) rename tests/tasks/{build => dockerfile}/labels.cue (92%) rename tests/tasks/{build => dockerfile}/platform.cue (92%) rename tests/tasks/{build => dockerfile}/testdata/Dockerfile (100%) rename tests/tasks/{build => dockerfile}/testdata/dockerfilepath/Dockerfile.custom (100%) rename tests/tasks/{build => dockerfile}/testdata/foo (100%) diff --git a/pkg/dagger.io/dagger/engine/image.cue b/pkg/dagger.io/dagger/engine/image.cue index 536e19b1..f0e9ac39 100644 --- a/pkg/dagger.io/dagger/engine/image.cue +++ b/pkg/dagger.io/dagger/engine/image.cue @@ -69,9 +69,8 @@ package engine } // Build a container image using buildkit -// FIXME: rename to #Dockerfile to clarify scope -#Build: { - $dagger: task: _name: "Build" +#Dockerfile: { + $dagger: task: _name: "Dockerfile" // Source directory to build source: #FS diff --git a/plan/task/build.go b/plan/task/dockerfile.go similarity index 90% rename from plan/task/build.go rename to plan/task/dockerfile.go index a7fe22f3..b7a9c3f7 100644 --- a/plan/task/build.go +++ b/plan/task/dockerfile.go @@ -22,13 +22,13 @@ import ( ) func init() { - Register("Build", func() Task { return &buildTask{} }) + Register("Dockerfile", func() Task { return &dockerfileTask{} }) } -type buildTask struct { +type dockerfileTask struct { } -func (t *buildTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { frontend, err := v.Lookup("frontend").String() if err != nil { return nil, err @@ -42,7 +42,7 @@ func (t *buildTask) Run(ctx context.Context, pctx *plancontext.Context, s solver } } -func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { +func (t *dockerfileTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) // Read auth info @@ -144,7 +144,7 @@ func (t *buildTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s }) } -func (t *buildTask) dockerBuildOpts(v *compiler.Value, pctx *plancontext.Context) (map[string]string, error) { +func (t *dockerfileTask) dockerBuildOpts(v *compiler.Value, pctx *plancontext.Context) (map[string]string, error) { opts := map[string]string{} if dockerfilePath := v.Lookup("dockerfile.path"); dockerfilePath.Exists() { diff --git a/tests/tasks.bats b/tests/tasks.bats index b7d942e9..26b3f76e 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -75,8 +75,8 @@ setup() { assert_failure } -@test "task: #Build" { - cd "$TESTDIR"/tasks/build +@test "task: #Dockerfile" { + cd "$TESTDIR"/tasks/dockerfile "$DAGGER" --europa up ./dockerfile.cue "$DAGGER" --europa up ./inlined_dockerfile.cue @@ -87,7 +87,7 @@ setup() { "$DAGGER" --europa up ./platform.cue cd "$TESTDIR" - "$DAGGER" --europa up ./tasks/build/build_auth.cue + "$DAGGER" --europa up ./tasks/dockerfile/build_auth.cue } @test "task: #Scratch" { cd "$TESTDIR"/tasks/scratch diff --git a/tests/tasks/copy/cue.mod/pkg/.gitignore b/tests/tasks/copy/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/copy/cue.mod/pkg/.gitignore +++ b/tests/tasks/copy/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/build/build_args.cue b/tests/tasks/dockerfile/build_args.cue similarity index 90% rename from tests/tasks/build/build_args.cue rename to tests/tasks/dockerfile/build_args.cue index 952ff96c..7a0fa1df 100644 --- a/tests/tasks/build/build_args.cue +++ b/tests/tasks/dockerfile/build_args.cue @@ -7,7 +7,7 @@ import ( engine.#Plan & { inputs: directories: testdata: path: "./testdata" - actions: build: engine.#Build & { + actions: build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d diff --git a/tests/tasks/build/build_auth.cue b/tests/tasks/dockerfile/build_auth.cue similarity index 100% rename from tests/tasks/build/build_auth.cue rename to tests/tasks/dockerfile/build_auth.cue diff --git a/tests/tasks/build/cue.mod/module.cue b/tests/tasks/dockerfile/cue.mod/module.cue similarity index 100% rename from tests/tasks/build/cue.mod/module.cue rename to tests/tasks/dockerfile/cue.mod/module.cue diff --git a/tests/tasks/build/cue.mod/pkg/.gitignore b/tests/tasks/dockerfile/cue.mod/pkg/.gitignore similarity index 100% rename from tests/tasks/build/cue.mod/pkg/.gitignore rename to tests/tasks/dockerfile/cue.mod/pkg/.gitignore diff --git a/tests/tasks/build/dockerfile.cue b/tests/tasks/dockerfile/dockerfile.cue similarity index 90% rename from tests/tasks/build/dockerfile.cue rename to tests/tasks/dockerfile/dockerfile.cue index 43d47457..cdaa6cf9 100644 --- a/tests/tasks/build/dockerfile.cue +++ b/tests/tasks/dockerfile/dockerfile.cue @@ -8,7 +8,7 @@ engine.#Plan & { inputs: directories: testdata: path: "./testdata" actions: { - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents } diff --git a/tests/tasks/build/dockerfile_path.cue b/tests/tasks/dockerfile/dockerfile_path.cue similarity index 91% rename from tests/tasks/build/dockerfile_path.cue rename to tests/tasks/dockerfile/dockerfile_path.cue index dcd5add4..c15a12fc 100644 --- a/tests/tasks/build/dockerfile_path.cue +++ b/tests/tasks/dockerfile/dockerfile_path.cue @@ -8,7 +8,7 @@ engine.#Plan & { inputs: directories: testdata: path: "./testdata" actions: { - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: path: "./dockerfilepath/Dockerfile.custom" } diff --git a/tests/tasks/build/image_config.cue b/tests/tasks/dockerfile/image_config.cue similarity index 94% rename from tests/tasks/build/image_config.cue rename to tests/tasks/dockerfile/image_config.cue index b163d44e..a9d399ad 100644 --- a/tests/tasks/build/image_config.cue +++ b/tests/tasks/dockerfile/image_config.cue @@ -9,7 +9,7 @@ engine.#Plan & { actions: { // FIXME: this doesn't test anything beside not crashing - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d diff --git a/tests/tasks/build/inlined_dockerfile.cue b/tests/tasks/dockerfile/inlined_dockerfile.cue similarity index 98% rename from tests/tasks/build/inlined_dockerfile.cue rename to tests/tasks/dockerfile/inlined_dockerfile.cue index 5d3a5370..c14771fc 100644 --- a/tests/tasks/build/inlined_dockerfile.cue +++ b/tests/tasks/dockerfile/inlined_dockerfile.cue @@ -8,7 +8,7 @@ engine.#Plan & { inputs: directories: testdata: path: "./testdata" actions: { - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d diff --git a/tests/tasks/build/labels.cue b/tests/tasks/dockerfile/labels.cue similarity index 92% rename from tests/tasks/build/labels.cue rename to tests/tasks/dockerfile/labels.cue index 9e74cb57..403314f9 100644 --- a/tests/tasks/build/labels.cue +++ b/tests/tasks/dockerfile/labels.cue @@ -9,7 +9,7 @@ engine.#Plan & { actions: { // FIXME: this doesn't test anything beside not crashing - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d diff --git a/tests/tasks/build/platform.cue b/tests/tasks/dockerfile/platform.cue similarity index 92% rename from tests/tasks/build/platform.cue rename to tests/tasks/dockerfile/platform.cue index 8b28c174..eeddcb38 100644 --- a/tests/tasks/build/platform.cue +++ b/tests/tasks/dockerfile/platform.cue @@ -9,7 +9,7 @@ engine.#Plan & { actions: { // FIXME: this doesn't test anything beside not crashing - build: engine.#Build & { + build: engine.#Dockerfile & { source: inputs.directories.testdata.contents dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d diff --git a/tests/tasks/build/testdata/Dockerfile b/tests/tasks/dockerfile/testdata/Dockerfile similarity index 100% rename from tests/tasks/build/testdata/Dockerfile rename to tests/tasks/dockerfile/testdata/Dockerfile diff --git a/tests/tasks/build/testdata/dockerfilepath/Dockerfile.custom b/tests/tasks/dockerfile/testdata/dockerfilepath/Dockerfile.custom similarity index 100% rename from tests/tasks/build/testdata/dockerfilepath/Dockerfile.custom rename to tests/tasks/dockerfile/testdata/dockerfilepath/Dockerfile.custom diff --git a/tests/tasks/build/testdata/foo b/tests/tasks/dockerfile/testdata/foo similarity index 100% rename from tests/tasks/build/testdata/foo rename to tests/tasks/dockerfile/testdata/foo diff --git a/tests/tasks/exec/cue.mod/pkg/.gitignore b/tests/tasks/exec/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/exec/cue.mod/pkg/.gitignore +++ b/tests/tasks/exec/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/mkdir/cue.mod/pkg/.gitignore b/tests/tasks/mkdir/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/mkdir/cue.mod/pkg/.gitignore +++ b/tests/tasks/mkdir/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/pull/cue.mod/pkg/.gitignore b/tests/tasks/pull/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/pull/cue.mod/pkg/.gitignore +++ b/tests/tasks/pull/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/readfile/cue.mod/pkg/.gitignore b/tests/tasks/readfile/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/readfile/cue.mod/pkg/.gitignore +++ b/tests/tasks/readfile/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/scratch/cue.mod/pkg/.gitignore b/tests/tasks/scratch/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/scratch/cue.mod/pkg/.gitignore +++ b/tests/tasks/scratch/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock diff --git a/tests/tasks/writefile/cue.mod/pkg/.gitignore b/tests/tasks/writefile/cue.mod/pkg/.gitignore index 2d4dc1ae..4e3cac04 100644 --- a/tests/tasks/writefile/cue.mod/pkg/.gitignore +++ b/tests/tasks/writefile/cue.mod/pkg/.gitignore @@ -1,3 +1,4 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock From 2745e1ae2e9a5250db3de2a78a1bb08bfef24ae5 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Thu, 13 Jan 2022 11:31:08 -0700 Subject: [PATCH 2/4] refactored Signed-off-by: Richard Jones --- pkg/dagger.io/dagger/engine/image.cue | 43 +++++++++---------- plan/task/dockerfile.go | 18 +------- tests/tasks.bats | 4 +- tests/tasks/dockerfile/build_args.cue | 2 +- tests/tasks/dockerfile/cue.mod/pkg/.gitignore | 2 + tests/tasks/dockerfile/dockerfile_path.cue | 2 +- tests/tasks/dockerfile/image_config.cue | 2 +- tests/tasks/dockerfile/inlined_dockerfile.cue | 2 +- tests/tasks/dockerfile/labels.cue | 2 +- tests/tasks/dockerfile/platform.cue | 2 +- 10 files changed, 31 insertions(+), 48 deletions(-) diff --git a/pkg/dagger.io/dagger/engine/image.cue b/pkg/dagger.io/dagger/engine/image.cue index f0e9ac39..7d2c3a62 100644 --- a/pkg/dagger.io/dagger/engine/image.cue +++ b/pkg/dagger.io/dagger/engine/image.cue @@ -68,38 +68,35 @@ package engine config: #ImageConfig } -// Build a container image using buildkit +// Build a container image using a Dockerfile #Dockerfile: { $dagger: task: _name: "Dockerfile" // Source directory to build source: #FS - { - frontend: "dockerfile" - dockerfile: { - path: string | *"Dockerfile" - } | { - contents: string - } - // Authentication - auth: [...{ - target: string - username: string - secret: string | #Secret - }] - - // FIXME: options ported from op.#DockerBuild - platforms?: [...string] - target?: string - buildArg?: [string]: string - label?: [string]: string - hosts?: [string]: string + *{ + path: string | *"Dockerfile" + } | { + contents: string } - // Root filesystem produced by build + // Authentication + auth: [...{ + target: string + username: string + secret: string | #Secret + }] + + platforms?: [...string] + target?: string + buildArg?: [string]: string + label?: [string]: string + hosts?: [string]: string + + // Root filesystem produced output: #FS - // Container image config produced by build + // Container image config produced config: #ImageConfig } diff --git a/plan/task/dockerfile.go b/plan/task/dockerfile.go index b7a9c3f7..dae8d9a7 100644 --- a/plan/task/dockerfile.go +++ b/plan/task/dockerfile.go @@ -29,20 +29,6 @@ type dockerfileTask struct { } func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { - frontend, err := v.Lookup("frontend").String() - if err != nil { - return nil, err - } - - switch frontend { - case "dockerfile": - return t.dockerfile(ctx, pctx, s, v) - default: - return nil, fmt.Errorf("unsupported frontend %q", frontend) - } -} - -func (t *dockerfileTask) dockerfile(ctx context.Context, pctx *plancontext.Context, s solver.Solver, v *compiler.Value) (*compiler.Value, error) { lg := log.Ctx(ctx) // Read auth info @@ -74,7 +60,7 @@ func (t *dockerfileTask) dockerfile(ctx context.Context, pctx *plancontext.Conte dockerfileDef := contextDef // Support inlined dockerfile - if dockerfile := v.Lookup("dockerfile.contents"); dockerfile.Exists() { + if dockerfile := v.Lookup("contents"); dockerfile.Exists() { contents, err := dockerfile.String() if err != nil { return nil, err @@ -147,7 +133,7 @@ func (t *dockerfileTask) dockerfile(ctx context.Context, pctx *plancontext.Conte func (t *dockerfileTask) dockerBuildOpts(v *compiler.Value, pctx *plancontext.Context) (map[string]string, error) { opts := map[string]string{} - if dockerfilePath := v.Lookup("dockerfile.path"); dockerfilePath.Exists() { + if dockerfilePath := v.Lookup("path"); dockerfilePath.Exists() { filename, err := dockerfilePath.String() if err != nil { return nil, err diff --git a/tests/tasks.bats b/tests/tasks.bats index 26b3f76e..49d8b792 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -85,9 +85,7 @@ setup() { "$DAGGER" --europa up ./image_config.cue "$DAGGER" --europa up ./labels.cue "$DAGGER" --europa up ./platform.cue - - cd "$TESTDIR" - "$DAGGER" --europa up ./tasks/dockerfile/build_auth.cue + "$DAGGER" --europa up ./build_auth.cue } @test "task: #Scratch" { cd "$TESTDIR"/tasks/scratch diff --git a/tests/tasks/dockerfile/build_args.cue b/tests/tasks/dockerfile/build_args.cue index 7a0fa1df..d99542b3 100644 --- a/tests/tasks/dockerfile/build_args.cue +++ b/tests/tasks/dockerfile/build_args.cue @@ -9,7 +9,7 @@ engine.#Plan & { actions: build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: contents: """ + contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d ARG TEST=foo RUN test "${TEST}" = "bar" diff --git a/tests/tasks/dockerfile/cue.mod/pkg/.gitignore b/tests/tasks/dockerfile/cue.mod/pkg/.gitignore index 2d4dc1ae..c88aae2e 100644 --- a/tests/tasks/dockerfile/cue.mod/pkg/.gitignore +++ b/tests/tasks/dockerfile/cue.mod/pkg/.gitignore @@ -1,3 +1,5 @@ # generated by dagger alpha.dagger.io +dagger.io dagger.lock +universe.dagger.io \ No newline at end of file diff --git a/tests/tasks/dockerfile/dockerfile_path.cue b/tests/tasks/dockerfile/dockerfile_path.cue index c15a12fc..42a121dc 100644 --- a/tests/tasks/dockerfile/dockerfile_path.cue +++ b/tests/tasks/dockerfile/dockerfile_path.cue @@ -10,7 +10,7 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: path: "./dockerfilepath/Dockerfile.custom" + path: "./dockerfilepath/Dockerfile.custom" } verify: engine.#Exec & { diff --git a/tests/tasks/dockerfile/image_config.cue b/tests/tasks/dockerfile/image_config.cue index a9d399ad..668c0cca 100644 --- a/tests/tasks/dockerfile/image_config.cue +++ b/tests/tasks/dockerfile/image_config.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: contents: """ + contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d ENV test foobar CMD /test-cmd diff --git a/tests/tasks/dockerfile/inlined_dockerfile.cue b/tests/tasks/dockerfile/inlined_dockerfile.cue index c14771fc..0dab63d2 100644 --- a/tests/tasks/dockerfile/inlined_dockerfile.cue +++ b/tests/tasks/dockerfile/inlined_dockerfile.cue @@ -10,7 +10,7 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: contents: """ + contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d RUN echo foobar > /output """ diff --git a/tests/tasks/dockerfile/labels.cue b/tests/tasks/dockerfile/labels.cue index 403314f9..dd3f921a 100644 --- a/tests/tasks/dockerfile/labels.cue +++ b/tests/tasks/dockerfile/labels.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: contents: """ + contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d """ label: FOO: "bar" diff --git a/tests/tasks/dockerfile/platform.cue b/tests/tasks/dockerfile/platform.cue index eeddcb38..0fed8a60 100644 --- a/tests/tasks/dockerfile/platform.cue +++ b/tests/tasks/dockerfile/platform.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - dockerfile: contents: """ + contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d """ platforms: ["linux/amd64"] From e59ba48ec07d0fae4c533f83ff131073a36cfe57 Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Thu, 13 Jan 2022 11:57:47 -0700 Subject: [PATCH 3/4] added dockerfile: field back to force evaluation of disjunction Signed-off-by: Richard Jones --- pkg/dagger.io/dagger/engine/image.cue | 2 +- plan/task/dockerfile.go | 4 ++-- tests/tasks/dockerfile/build_args.cue | 2 +- tests/tasks/dockerfile/dockerfile.cue | 1 + tests/tasks/dockerfile/dockerfile_path.cue | 2 +- tests/tasks/dockerfile/image_config.cue | 2 +- tests/tasks/dockerfile/inlined_dockerfile.cue | 2 +- tests/tasks/dockerfile/labels.cue | 2 +- tests/tasks/dockerfile/platform.cue | 2 +- 9 files changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/dagger.io/dagger/engine/image.cue b/pkg/dagger.io/dagger/engine/image.cue index 7d2c3a62..39e2fbb0 100644 --- a/pkg/dagger.io/dagger/engine/image.cue +++ b/pkg/dagger.io/dagger/engine/image.cue @@ -75,7 +75,7 @@ package engine // Source directory to build source: #FS - *{ + dockerfile: *{ path: string | *"Dockerfile" } | { contents: string diff --git a/plan/task/dockerfile.go b/plan/task/dockerfile.go index dae8d9a7..c9c4e5d0 100644 --- a/plan/task/dockerfile.go +++ b/plan/task/dockerfile.go @@ -60,7 +60,7 @@ func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s s dockerfileDef := contextDef // Support inlined dockerfile - if dockerfile := v.Lookup("contents"); dockerfile.Exists() { + if dockerfile := v.Lookup("dockerfile.contents"); dockerfile.Exists() { contents, err := dockerfile.String() if err != nil { return nil, err @@ -133,7 +133,7 @@ func (t *dockerfileTask) Run(ctx context.Context, pctx *plancontext.Context, s s func (t *dockerfileTask) dockerBuildOpts(v *compiler.Value, pctx *plancontext.Context) (map[string]string, error) { opts := map[string]string{} - if dockerfilePath := v.Lookup("path"); dockerfilePath.Exists() { + if dockerfilePath := v.Lookup("dockerfile.path"); dockerfilePath.Exists() { filename, err := dockerfilePath.String() if err != nil { return nil, err diff --git a/tests/tasks/dockerfile/build_args.cue b/tests/tasks/dockerfile/build_args.cue index d99542b3..7a0fa1df 100644 --- a/tests/tasks/dockerfile/build_args.cue +++ b/tests/tasks/dockerfile/build_args.cue @@ -9,7 +9,7 @@ engine.#Plan & { actions: build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - contents: """ + dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d ARG TEST=foo RUN test "${TEST}" = "bar" diff --git a/tests/tasks/dockerfile/dockerfile.cue b/tests/tasks/dockerfile/dockerfile.cue index cdaa6cf9..576c4745 100644 --- a/tests/tasks/dockerfile/dockerfile.cue +++ b/tests/tasks/dockerfile/dockerfile.cue @@ -10,6 +10,7 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents + // path: "Dockerfile" } verify: engine.#Exec & { diff --git a/tests/tasks/dockerfile/dockerfile_path.cue b/tests/tasks/dockerfile/dockerfile_path.cue index 42a121dc..c15a12fc 100644 --- a/tests/tasks/dockerfile/dockerfile_path.cue +++ b/tests/tasks/dockerfile/dockerfile_path.cue @@ -10,7 +10,7 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - path: "./dockerfilepath/Dockerfile.custom" + dockerfile: path: "./dockerfilepath/Dockerfile.custom" } verify: engine.#Exec & { diff --git a/tests/tasks/dockerfile/image_config.cue b/tests/tasks/dockerfile/image_config.cue index 668c0cca..a9d399ad 100644 --- a/tests/tasks/dockerfile/image_config.cue +++ b/tests/tasks/dockerfile/image_config.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - contents: """ + dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d ENV test foobar CMD /test-cmd diff --git a/tests/tasks/dockerfile/inlined_dockerfile.cue b/tests/tasks/dockerfile/inlined_dockerfile.cue index 0dab63d2..c14771fc 100644 --- a/tests/tasks/dockerfile/inlined_dockerfile.cue +++ b/tests/tasks/dockerfile/inlined_dockerfile.cue @@ -10,7 +10,7 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - contents: """ + dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d RUN echo foobar > /output """ diff --git a/tests/tasks/dockerfile/labels.cue b/tests/tasks/dockerfile/labels.cue index dd3f921a..403314f9 100644 --- a/tests/tasks/dockerfile/labels.cue +++ b/tests/tasks/dockerfile/labels.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - contents: """ + dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d """ label: FOO: "bar" diff --git a/tests/tasks/dockerfile/platform.cue b/tests/tasks/dockerfile/platform.cue index 0fed8a60..eeddcb38 100644 --- a/tests/tasks/dockerfile/platform.cue +++ b/tests/tasks/dockerfile/platform.cue @@ -11,7 +11,7 @@ engine.#Plan & { // FIXME: this doesn't test anything beside not crashing build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - contents: """ + dockerfile: contents: """ FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d """ platforms: ["linux/amd64"] From d62df71fd40bdbd12d9527a0bf701ab65f093dbd Mon Sep 17 00:00:00 2001 From: Richard Jones Date: Thu, 13 Jan 2022 15:35:37 -0700 Subject: [PATCH 4/4] added heredoc test Signed-off-by: Richard Jones --- tests/tasks.bats | 1 + tests/tasks/dockerfile/dockerfile.cue | 1 - .../dockerfile/inlined_dockerfile_heredoc.cue | 95 +++++++++++++++++++ 3 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 tests/tasks/dockerfile/inlined_dockerfile_heredoc.cue diff --git a/tests/tasks.bats b/tests/tasks.bats index 49d8b792..31b02f38 100644 --- a/tests/tasks.bats +++ b/tests/tasks.bats @@ -80,6 +80,7 @@ setup() { "$DAGGER" --europa up ./dockerfile.cue "$DAGGER" --europa up ./inlined_dockerfile.cue + "$DAGGER" --europa up ./inlined_dockerfile_heredoc.cue "$DAGGER" --europa up ./dockerfile_path.cue "$DAGGER" --europa up ./build_args.cue "$DAGGER" --europa up ./image_config.cue diff --git a/tests/tasks/dockerfile/dockerfile.cue b/tests/tasks/dockerfile/dockerfile.cue index 576c4745..cdaa6cf9 100644 --- a/tests/tasks/dockerfile/dockerfile.cue +++ b/tests/tasks/dockerfile/dockerfile.cue @@ -10,7 +10,6 @@ engine.#Plan & { actions: { build: engine.#Dockerfile & { source: inputs.directories.testdata.contents - // path: "Dockerfile" } verify: engine.#Exec & { diff --git a/tests/tasks/dockerfile/inlined_dockerfile_heredoc.cue b/tests/tasks/dockerfile/inlined_dockerfile_heredoc.cue new file mode 100644 index 00000000..b3e5ba06 --- /dev/null +++ b/tests/tasks/dockerfile/inlined_dockerfile_heredoc.cue @@ -0,0 +1,95 @@ +package testing + +import ( + "dagger.io/dagger/engine" +) + +engine.#Plan & { + inputs: directories: testdata: path: "./testdata" + + actions: { + build: engine.#Dockerfile & { + source: inputs.directories.testdata.contents + dockerfile: contents: """ + # syntax = docker/dockerfile:1.3 + FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d + RUN echo foobar > /output + """ + } + + verify: engine.#Exec & { + input: build.output + args: ["sh", "-c", "test $(cat /output) = foobar"] + } + } +} + +// TestDockerfilePath: #up: [ +// op.#DockerBuild & { +// context: TestData +// dockerfilePath: "./dockerfilepath/Dockerfile.custom" +// }, +// op.#Exec & { +// args: ["sh", "-c", "test $(cat /test) = dockerfilePath"] +// }, +// ] + +// TestBuildArgs: #up: [ +// op.#DockerBuild & { +// dockerfile: """ +// FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d +// ARG TEST=foo +// RUN test "${TEST}" = "bar" +// """ +// buildArg: TEST: "bar" +// }, +// ] + +// // FIXME: this doesn't test anything beside not crashing +// TestBuildLabels: #up: [ +// op.#DockerBuild & { +// dockerfile: """ +// FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d +// """ +// label: FOO: "bar" +// }, +// ] + +// // FIXME: this doesn't test anything beside not crashing +// TestBuildPlatform: #up: [ +// op.#DockerBuild & { +// dockerfile: """ +// FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d +// """ +// platforms: ["linux/amd64"] +// }, +// ] + +// TestImageMetadata: #up: [ +// op.#DockerBuild & { +// dockerfile: """ +// FROM alpine:latest@sha256:ab00606a42621fb68f2ed6ad3c88be54397f981a7b70a79db3d1172b11c4367d +// ENV CHECK foobar +// ENV DOUBLECHECK test +// """ +// }, +// op.#Exec & { +// args: ["sh", "-c", #""" +// env +// test "$CHECK" = "foobar" +// """#] +// }, +// ] + +// // Make sure the metadata is carried over with a `Load` +// TestImageMetadataIndirect: #up: [ +// op.#Load & { +// from: TestImageMetadata +// }, +// op.#Exec & { +// args: ["sh", "-c", #""" +// env +// test "$DOUBLECHECK" = "test" +// """#] +// }, +// ]