diff --git a/pkg/memlogd/build.yml b/pkg/memlogd/build.yml index 23046aa4c..19ef34d79 100644 --- a/pkg/memlogd/build.yml +++ b/pkg/memlogd/build.yml @@ -1,3 +1,4 @@ image: memlogd -binds: +config: + binds: - /var/run:/var/run diff --git a/src/cmd/linuxkit/pkglib/pkglib.go b/src/cmd/linuxkit/pkglib/pkglib.go index 7983feb82..325b32ca5 100644 --- a/src/cmd/linuxkit/pkglib/pkglib.go +++ b/src/cmd/linuxkit/pkglib/pkglib.go @@ -10,7 +10,7 @@ import ( "strings" "text/template" - "gopkg.in/yaml.v2" + "gopkg.in/yaml.v3" "github.com/linuxkit/linuxkit/src/cmd/linuxkit/moby" "github.com/linuxkit/linuxkit/src/cmd/linuxkit/util" @@ -157,7 +157,9 @@ func NewFromConfig(cfg PkglibConfig, args ...string) ([]Pkg, error) { return nil, err } - if err := yaml.Unmarshal(b, &pi); err != nil { + dec := yaml.NewDecoder(bytes.NewReader(b)) + dec.KnownFields(true) + if err := dec.Decode(&pi); err != nil { return nil, err } diff --git a/test/cases/000_build/090_validate_build_yaml/Dockerfile b/test/cases/000_build/090_validate_build_yaml/Dockerfile new file mode 100644 index 000000000..26f231a21 --- /dev/null +++ b/test/cases/000_build/090_validate_build_yaml/Dockerfile @@ -0,0 +1,2 @@ +FROM alpine:3.22 + diff --git a/test/cases/000_build/090_validate_build_yaml/build.yml b/test/cases/000_build/090_validate_build_yaml/build.yml new file mode 100644 index 000000000..163b23b58 --- /dev/null +++ b/test/cases/000_build/090_validate_build_yaml/build.yml @@ -0,0 +1,7 @@ +image: build-args-test +network: true +arches: + - amd64 + - arm64 +# should error out on this unknown field +unknownField: "abc" diff --git a/test/cases/000_build/090_validate_build_yaml/test.sh b/test/cases/000_build/090_validate_build_yaml/test.sh new file mode 100755 index 000000000..78694a0f5 --- /dev/null +++ b/test/cases/000_build/090_validate_build_yaml/test.sh @@ -0,0 +1,19 @@ +#!/bin/sh +# SUMMARY: Check that the build-args are correctly passed to Dockerfiles +# LABELS: +# REPEAT: + +set -ex + +# Source libraries. Uncomment if needed/defined +#. "${RT_LIB}" +. "${RT_PROJECT_ROOT}/_lib/lib.sh" + +# Test code goes here +RESULT=$(linuxkit pkg build --force . 2>&1 || echo FAILED) +if [ "${RESULT}" != "FAILED" ]; then + echo "Build should have failed with invalid yaml, instead was ${RESULT}" +fi +echo "Summary: correctly detected invalid yaml" + +exit 0