refactored
Signed-off-by: Richard Jones <richard@dagger.io>
This commit is contained in:
parent
729013ae91
commit
2745e1ae2e
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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"
|
||||
|
@ -1,3 +1,5 @@
|
||||
# generated by dagger
|
||||
alpha.dagger.io
|
||||
dagger.io
|
||||
dagger.lock
|
||||
universe.dagger.io
|
@ -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 & {
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
"""
|
||||
|
@ -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"
|
||||
|
@ -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"]
|
||||
|
Reference in New Issue
Block a user