From 2df0685cbee560cde3ddaffae87b036d9882d7ea Mon Sep 17 00:00:00 2001
From: Brent Baude <bbaude@redhat.com>
Date: Tue, 21 Sep 2021 07:52:22 -0500
Subject: [PATCH] Set context dir for play kube build

When performing an image build with play kube, we need to set the
context directory so things like file copies have the correct input
path.

Signed-off-by: Brent Baude <bbaude@redhat.com>
---
 pkg/domain/infra/abi/play.go |  1 +
 test/e2e/play_build_test.go  | 19 +++++++++++++++++--
 2 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/pkg/domain/infra/abi/play.go b/pkg/domain/infra/abi/play.go
index e386c17e92..35389ec5e0 100644
--- a/pkg/domain/infra/abi/play.go
+++ b/pkg/domain/infra/abi/play.go
@@ -435,6 +435,7 @@ func (ic *ContainerEngine) getImageAndLabelInfo(ctx context.Context, cwd string,
 		buildOpts.Isolation = buildahDefine.IsolationChroot
 		buildOpts.CommonBuildOpts = commonOpts
 		buildOpts.Output = container.Image
+		buildOpts.ContextDirectory = filepath.Dir(buildFile)
 		if _, _, err := ic.Libpod.Build(ctx, *buildOpts, []string{buildFile}...); err != nil {
 			return nil, nil, err
 		}
diff --git a/test/e2e/play_build_test.go b/test/e2e/play_build_test.go
index 16f2687f35..564735e072 100644
--- a/test/e2e/play_build_test.go
+++ b/test/e2e/play_build_test.go
@@ -80,12 +80,17 @@ status: {}
 FROM quay.io/libpod/alpine_nginx:latest
 RUN apk update && apk add strace
 LABEL homer=dad
+COPY copyfile /copyfile
 `
 	var prebuiltImage = `
 FROM quay.io/libpod/alpine_nginx:latest
 RUN apk update && apk add strace
 LABEL marge=mom
 `
+
+	var copyFile = `just a text file
+`
+
 	It("Check that image is built using Dockerfile", func() {
 		// Setup
 		yamlDir := filepath.Join(tempdir, RandomString(12))
@@ -97,7 +102,9 @@ LABEL marge=mom
 		Expect(err).To(BeNil())
 		err = writeYaml(playBuildFile, filepath.Join(app1Dir, "Dockerfile"))
 		Expect(err).To(BeNil())
-
+		// Write a file to be copied
+		err = writeYaml(copyFile, filepath.Join(app1Dir, "copyfile"))
+		Expect(err).To(BeNil())
 		// Switch to temp dir and restore it afterwards
 		cwd, err := os.Getwd()
 		Expect(err).To(BeNil())
@@ -131,7 +138,9 @@ LABEL marge=mom
 		Expect(err).To(BeNil())
 		err = writeYaml(playBuildFile, filepath.Join(app1Dir, "Containerfile"))
 		Expect(err).To(BeNil())
-
+		// Write a file to be copied
+		err = writeYaml(copyFile, filepath.Join(app1Dir, "copyfile"))
+		Expect(err).To(BeNil())
 		// Switch to temp dir and restore it afterwards
 		cwd, err := os.Getwd()
 		Expect(err).To(BeNil())
@@ -172,6 +181,9 @@ LABEL marge=mom
 		Expect(err).To(BeNil())
 		err = writeYaml(playBuildFile, filepath.Join(app1Dir, "Containerfile"))
 		Expect(err).To(BeNil())
+		// Write a file to be copied
+		err = writeYaml(copyFile, filepath.Join(app1Dir, "copyfile"))
+		Expect(err).To(BeNil())
 
 		// Switch to temp dir and restore it afterwards
 		cwd, err := os.Getwd()
@@ -215,6 +227,9 @@ LABEL marge=mom
 		Expect(err).To(BeNil())
 		err = writeYaml(playBuildFile, filepath.Join(app1Dir, "Containerfile"))
 		Expect(err).To(BeNil())
+		// Write a file to be copied
+		err = writeYaml(copyFile, filepath.Join(app1Dir, "copyfile"))
+		Expect(err).To(BeNil())
 
 		// Switch to temp dir and restore it afterwards
 		cwd, err := os.Getwd()