Allow .dockerignore to ignore everything
Change CLI error msg because it was too specific and didn't make sense when there were errors not related to inaccessible files. Removed some log.Error() calls since they're not really errors we should log. Returning the error will be enough. Closes: #13417 Signed-off-by: Doug Davis <dug@us.ibm.com>
This commit is contained in:
parent
b21ef2d1d3
commit
82ea6ed2bc
3 changed files with 46 additions and 10 deletions
|
@ -175,7 +175,7 @@ func (cli *DockerCli) CmdBuild(args ...string) error {
|
|||
}
|
||||
|
||||
if err := utils.ValidateContextDirectory(root, excludes); err != nil {
|
||||
return fmt.Errorf("Error checking context is accessible: '%s'. Please check permissions and try again.", err)
|
||||
return fmt.Errorf("Error checking context: '%s'.", err)
|
||||
}
|
||||
options := &archive.TarOptions{
|
||||
Compression: archive.Uncompressed,
|
||||
|
|
|
@ -1722,8 +1722,8 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
|
|||
c.Fatalf("output should've contained the string: no permission to read from but contained: %s", out)
|
||||
}
|
||||
|
||||
if !strings.Contains(out, "Error checking context is accessible") {
|
||||
c.Fatalf("output should've contained the string: Error checking context is accessible")
|
||||
if !strings.Contains(out, "Error checking context") {
|
||||
c.Fatalf("output should've contained the string: Error checking context")
|
||||
}
|
||||
}
|
||||
{
|
||||
|
@ -1759,8 +1759,8 @@ func (s *DockerSuite) TestBuildWithInaccessibleFilesInContext(c *check.C) {
|
|||
c.Fatalf("output should've contained the string: can't access %s", out)
|
||||
}
|
||||
|
||||
if !strings.Contains(out, "Error checking context is accessible") {
|
||||
c.Fatalf("output should've contained the string: Error checking context is accessible")
|
||||
if !strings.Contains(out, "Error checking context") {
|
||||
c.Fatalf("output should've contained the string: Error checking context\ngot:%s", out)
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -3676,13 +3676,50 @@ func (s *DockerSuite) TestBuildDockerignoringWholeDir(c *check.C) {
|
|||
".gitignore": "",
|
||||
".dockerignore": ".*\n",
|
||||
})
|
||||
c.Assert(err, check.IsNil)
|
||||
defer ctx.Close()
|
||||
if err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
|
||||
c.Assert(ctx.Add(".dockerfile", "*"), check.IsNil)
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
|
||||
c.Assert(ctx.Add(".dockerfile", "."), check.IsNil)
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
|
||||
c.Assert(ctx.Add(".dockerfile", "?"), check.IsNil)
|
||||
if _, err = buildImageFromContext(name, ctx, true); err != nil {
|
||||
c.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestBuildDockerignoringBadExclusion(c *check.C) {
|
||||
name := "testbuilddockerignorewholedir"
|
||||
dockerfile := `
|
||||
FROM busybox
|
||||
COPY . /
|
||||
RUN [[ ! -e /.gitignore ]]
|
||||
RUN [[ -f /Makefile ]]`
|
||||
ctx, err := fakeContext(dockerfile, map[string]string{
|
||||
"Dockerfile": "FROM scratch",
|
||||
"Makefile": "all:",
|
||||
".gitignore": "",
|
||||
".dockerignore": "!\n",
|
||||
})
|
||||
c.Assert(err, check.IsNil)
|
||||
defer ctx.Close()
|
||||
if _, err = buildImageFromContext(name, ctx, true); err == nil {
|
||||
c.Fatalf("Build was supposed to fail but didn't")
|
||||
}
|
||||
|
||||
if err.Error() != "failed to build the image: Error checking context: 'Illegal exclusion pattern: !'.\n" {
|
||||
c.Fatalf("Incorrect output, got:%q", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestBuildLineBreak(c *check.C) {
|
||||
|
|
|
@ -40,7 +40,6 @@ func CleanPatterns(patterns []string) ([]string, [][]string, bool, error) {
|
|||
}
|
||||
if Exclusion(pattern) {
|
||||
if len(pattern) == 1 {
|
||||
logrus.Errorf("Illegal exclusion pattern: %s", pattern)
|
||||
return nil, nil, false, errors.New("Illegal exclusion pattern: !")
|
||||
}
|
||||
exceptions = true
|
||||
|
@ -94,7 +93,6 @@ func OptimizedMatches(file string, patterns []string, patDirs [][]string) (bool,
|
|||
|
||||
match, err := filepath.Match(pattern, file)
|
||||
if err != nil {
|
||||
logrus.Errorf("Error matching: %s (pattern: %s)", file, pattern)
|
||||
return false, err
|
||||
}
|
||||
|
||||
|
@ -114,6 +112,7 @@ func OptimizedMatches(file string, patterns []string, patDirs [][]string) (bool,
|
|||
if matched {
|
||||
logrus.Debugf("Skipping excluded path: %s", file)
|
||||
}
|
||||
|
||||
return matched, nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue