diff --git a/integration_tests/dockerfiles/Dockerfile_test_multistage b/integration_tests/dockerfiles/Dockerfile_test_multistage index 3833e8806..18fa2d2c1 100644 --- a/integration_tests/dockerfiles/Dockerfile_test_multistage +++ b/integration_tests/dockerfiles/Dockerfile_test_multistage @@ -2,7 +2,8 @@ FROM gcr.io/distroless/base:latest COPY . . FROM scratch as second -COPY --from=0 context/foo /foo +ENV foopath context/foo +COPY --from=0 $foopath context/b* /foo/ FROM gcr.io/distroless/base:latest COPY --from=second /foo /foo2 diff --git a/pkg/commands/copy.go b/pkg/commands/copy.go index 3d617a3db..c2ca45fc2 100644 --- a/pkg/commands/copy.go +++ b/pkg/commands/copy.go @@ -73,7 +73,8 @@ func (c *CopyCommand) ExecuteCommand(config *manifest.Schema2Config) error { } if fi.IsDir() { if !filepath.IsAbs(dest) { - dest = filepath.Join(cwd, dest) + // we need to add '/' to the end to indicate the destination is a directory + dest = filepath.Join(cwd, dest) + "/" } if err := util.CopyDir(fullPath, dest); err != nil { return err diff --git a/pkg/dockerfile/dockerfile.go b/pkg/dockerfile/dockerfile.go index c5e91f256..8cf98910a 100644 --- a/pkg/dockerfile/dockerfile.go +++ b/pkg/dockerfile/dockerfile.go @@ -42,7 +42,7 @@ func Parse(b []byte) ([]instructions.Stage, error) { return stages, err } -// ResolveStages resolves any calls to previous stages to the number value of that stage +// ResolveStages resolves any calls to previous stages with names to indices // Ex. --from=second_stage should be --from=1 for easier processing later on func ResolveStages(stages []instructions.Stage) { nameToIndex := make(map[string]string) diff --git a/pkg/util/fs_util.go b/pkg/util/fs_util.go index e32517c9a..fa236a771 100644 --- a/pkg/util/fs_util.go +++ b/pkg/util/fs_util.go @@ -144,6 +144,9 @@ func RelativeFiles(fp string, root string) ([]string, error) { fullPath := filepath.Join(root, fp) logrus.Debugf("Getting files and contents at root %s", fullPath) err := filepath.Walk(fullPath, func(path string, info os.FileInfo, err error) error { + if PathInWhitelist(path, root) { + return nil + } if err != nil { return err } diff --git a/pkg/util/fs_util_test.go b/pkg/util/fs_util_test.go index 36583564c..be2574d13 100644 --- a/pkg/util/fs_util_test.go +++ b/pkg/util/fs_util_test.go @@ -106,10 +106,8 @@ var tests = []struct { expectedFiles: []string{ "workspace/foo/a", "workspace/foo/b", - "kaniko/file", "workspace", "workspace/foo", - "kaniko", ".", }, },