diff --git a/pkg/skaffold/build/cache/hash.go b/pkg/skaffold/build/cache/hash.go index 1487f8a38af..358690f40b0 100644 --- a/pkg/skaffold/build/cache/hash.go +++ b/pkg/skaffold/build/cache/hash.go @@ -28,6 +28,7 @@ import ( "sort" "github.com/pkg/errors" + "github.com/sirupsen/logrus" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/docker" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest" @@ -59,6 +60,11 @@ func getHashForArtifact(ctx context.Context, depLister DependencyLister, a *late for _, d := range deps { h, err := hashFunction(d) if err != nil { + if os.IsNotExist(err) { + logrus.Tracef("skipping dependency for artifact cache calculation, file not found %s: %s", d, err) + continue // Ignore files that don't exist + } + return "", errors.Wrapf(err, "getting hash for %s", d) } inputs = append(inputs, h) diff --git a/pkg/skaffold/build/cache/hash_test.go b/pkg/skaffold/build/cache/hash_test.go index aefe740899e..c5b5b1f3d11 100644 --- a/pkg/skaffold/build/cache/hash_test.go +++ b/pkg/skaffold/build/cache/hash_test.go @@ -18,6 +18,7 @@ package cache import ( "context" + "os" "testing" "github.com/GoogleContainerTools/skaffold/pkg/skaffold/schema/latest" @@ -34,6 +35,9 @@ func (m *stubDependencyLister) DependenciesForArtifact(ctx context.Context, arti } var mockCacheHasher = func(s string) (string, error) { + if s == "not-found" { + return "", os.ErrNotExist + } return s, nil } @@ -57,6 +61,12 @@ func TestGetHashForArtifact(t *testing.T) { artifact: &latest.Artifact{}, expected: "1caa15f7ce87536bddbac30a39768e8e3b212bf591f9b64926fa50c40b614c66", }, + { + description: "ignore file not found", + dependencies: []string{"a", "b", "not-found"}, + artifact: &latest.Artifact{}, + expected: "1caa15f7ce87536bddbac30a39768e8e3b212bf591f9b64926fa50c40b614c66", + }, { description: "dependencies in different orders", dependencies: []string{"b", "a"},