Merge pull request #1404 from talentedmrjones/europa-rename-engine-build-dockerfile

rename engine.#Build to engine.#Dockerfile
This commit is contained in:
Richard Jones 2022-01-13 16:32:10 -07:00 committed by GitHub
commit 589fc6b674
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 141 additions and 56 deletions

View File

@ -68,16 +68,14 @@ package engine
config: #ImageConfig
}
// Build a container image using buildkit
// FIXME: rename to #Dockerfile to clarify scope
#Build: {
$dagger: task: _name: "Build"
// Build a container image using a Dockerfile
#Dockerfile: {
$dagger: task: _name: "Dockerfile"
// Source directory to build
source: #FS
{
frontend: "dockerfile"
dockerfile: {
dockerfile: *{
path: string | *"Dockerfile"
} | {
contents: string
@ -90,17 +88,15 @@ package engine
secret: string | #Secret
}]
// FIXME: options ported from op.#DockerBuild
platforms?: [...string]
target?: string
buildArg?: [string]: string
label?: [string]: string
hosts?: [string]: string
}
// Root filesystem produced by build
// Root filesystem produced
output: #FS
// Container image config produced by build
// Container image config produced
config: #ImageConfig
}

View File

@ -22,27 +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) {
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 *buildTask) dockerfile(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) {
lg := log.Ctx(ctx)
// Read auth info
@ -144,7 +130,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() {

View File

@ -75,19 +75,18 @@ 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
"$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
"$DAGGER" --europa up ./labels.cue
"$DAGGER" --europa up ./platform.cue
cd "$TESTDIR"
"$DAGGER" --europa up ./tasks/build/build_auth.cue
"$DAGGER" --europa up ./build_auth.cue
}
@test "task: #Scratch" {
cd "$TESTDIR"/tasks/scratch

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -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

View File

@ -1,3 +1,5 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock
universe.dagger.io

View File

@ -8,7 +8,7 @@ engine.#Plan & {
inputs: directories: testdata: path: "./testdata"
actions: {
build: engine.#Build & {
build: engine.#Dockerfile & {
source: inputs.directories.testdata.contents
}

View File

@ -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"
}

View File

@ -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

View File

@ -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

View File

@ -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"
// """#]
// },
// ]

View File

@ -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

View File

@ -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

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock

View File

@ -1,3 +1,4 @@
# generated by dagger
alpha.dagger.io
dagger.io
dagger.lock