Add test dir for ignore files

It seems like .dockerignore deletes files containeed within the file locally upon
docker build, so I created a temporary test dir to make sure the
--ignore flag works. We make sure it exists before building docker and
kaniko for Dockerfile_test_ignore, and then delete it after the builds
have completed.
This commit is contained in:
Priya Wadhwa 2018-10-12 12:48:16 -07:00
parent a572774bbe
commit adac8d495d
1 changed files with 17 additions and 1 deletions

View File

@ -37,6 +37,7 @@ const (
buildContextPath = "/workspace"
cacheDir = "/workspace/cache"
baseImageToCache = "gcr.io/google-appengine/debian9@sha256:1d6a9a6d106bd795098f60f4abb7083626354fa6735e81743c7f8cfca11259f0"
testDirPath = "test/dir/path"
)
// Arguments to build Dockerfiles with, used for both docker and kaniko builds
@ -54,7 +55,7 @@ var argsMap = map[string][]string{
"Dockerfile_test_multistage": {"file=/foo2"},
}
var filesToIgnore = []string{"context/bar/*", "context/tars/"}
var filesToIgnore = []string{"test/*"}
func ignoreFlags() []string {
var f []string
@ -174,6 +175,9 @@ func (d *DockerFileBuilder) BuildImage(imageRepo, gcsBucket, dockerfilesPath, do
additionalFlags...)...,
)
if d.includeDockerIgnore(dockerfile) {
if err := setupTestDir(); err != nil {
return err
}
if err := generateDockerIgnore(); err != nil {
return err
}
@ -188,7 +192,11 @@ func (d *DockerFileBuilder) BuildImage(imageRepo, gcsBucket, dockerfilesPath, do
if err := deleteDockerIgnore(); err != nil {
return err
}
if err := setupTestDir(); err != nil {
return err
}
}
defer removeTestDir()
contextFlag := "-c"
contextPath := buildContextPath
@ -289,6 +297,14 @@ func (d *DockerFileBuilder) includeDockerIgnore(dockerfile string) bool {
return false
}
func setupTestDir() error {
return os.MkdirAll(testDirPath, 0644)
}
func removeTestDir() error {
return os.RemoveAll(testDirPath)
}
func generateDockerIgnore() error {
f, err := os.Create(".dockerignore")
if err != nil {