Skip to content

Commit

Permalink
Merge pull request #1234 from tejal29/fix_copy_from
Browse files Browse the repository at this point in the history
Apply dockefile exclude only for first stage
  • Loading branch information
tejal29 authored May 19, 2020
2 parents 1d11b40 + 113c239 commit 3f3c19a
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 1 deletion.
8 changes: 7 additions & 1 deletion integration/dockerfiles/Dockerfile_test_dockerignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
# This dockerfile makes sure the .dockerignore is working
# If so then ignore/foo should copy to /foo
# If not, then this image won't build because it will attempt to copy three files to /foo, which is a file not a directory
FROM scratch
FROM scratch as base
COPY ignore/* /foo

From base as first
COPY --from=base /foo ignore/bar

FROM first
COPY --from=first ignore/* /fooAnother/
2 changes: 2 additions & 0 deletions pkg/executor/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -596,6 +596,7 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) {
}
logrus.Infof("Built cross stage deps: %v", crossStageDependencies)

util.IsFirstStage = true
for index, stage := range kanikoStages {
sb, err := newStageBuilder(opts, stage, crossStageDependencies, digestToCacheKey, stageIdxToDigest, stageNameToIdx)
if err != nil {
Expand All @@ -604,6 +605,7 @@ func DoBuild(opts *config.KanikoOptions) (v1.Image, error) {
if err := sb.build(); err != nil {
return nil, errors.Wrap(err, "error building stage")
}
util.IsFirstStage = false

reviewConfig(stage, &sb.cf.Config)

Expand Down
5 changes: 5 additions & 0 deletions pkg/util/fs_util.go
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ var whitelist = initialWhitelist
var volumes = []string{}

var excluded []string
var IsFirstStage = true

type ExtractFunction func(string, *tar.Header, io.Reader) error

Expand Down Expand Up @@ -678,6 +679,10 @@ func GetExcludedFiles(dockerfilepath string, buildcontext string) error {

// ExcludeFile returns true if the .dockerignore specified this file should be ignored
func ExcludeFile(path, buildcontext string) bool {
// Apply dockerfile excludes for first stage only
if !IsFirstStage {
return false
}
if HasFilepathPrefix(path, buildcontext, false) {
var err error
path, err = filepath.Rel(buildcontext, path)
Expand Down

0 comments on commit 3f3c19a

Please sign in to comment.