summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2022-02-11 12:08:59 -0500
committerGitHub <noreply@github.com>2022-02-11 12:08:59 -0500
commit564404b4fa7eea5d93756627ce98ca68fd19a72b (patch)
tree950cbfb6efe6694497ec32c39e75717f237799ff
parent28ccb79b41553e31c5bf6e6460106f01f0317c6d (diff)
parent4966adddbb8890fdcdd542c3219469133b5583eb (diff)
downloadpodman-564404b4fa7eea5d93756627ce98ca68fd19a72b.tar.gz
podman-564404b4fa7eea5d93756627ce98ca68fd19a72b.tar.bz2
podman-564404b4fa7eea5d93756627ce98ca68fd19a72b.zip
Merge pull request #13210 from rhatdan/build
Make sure building with relative paths work correctly.
-rw-r--r--pkg/bindings/images/build.go2
-rw-r--r--test/system/070-build.bats28
2 files changed, 27 insertions, 3 deletions
diff --git a/pkg/bindings/images/build.go b/pkg/bindings/images/build.go
index a363f2c6e..c508cb767 100644
--- a/pkg/bindings/images/build.go
+++ b/pkg/bindings/images/build.go
@@ -352,11 +352,13 @@ func Build(ctx context.Context, containerFiles []string, options entities.BuildO
}
c = tmpFile.Name()
}
+ c = filepath.Clean(c)
cfDir := filepath.Dir(c)
if absDir, err := filepath.EvalSymlinks(cfDir); err == nil {
name := filepath.ToSlash(strings.TrimPrefix(c, cfDir+string(filepath.Separator)))
c = filepath.Join(absDir, name)
}
+
containerfile, err := filepath.Abs(c)
if err != nil {
logrus.Errorf("Cannot find absolute path of %v: %v", c, err)
diff --git a/test/system/070-build.bats b/test/system/070-build.bats
index d5f7365e8..a95acd986 100644
--- a/test/system/070-build.bats
+++ b/test/system/070-build.bats
@@ -88,12 +88,10 @@ EOF
containerfile=$PODMAN_TMPDIR/Containerfile
cat >$containerfile <<EOF
FROM $IMAGE
-RUN apk add nginx
RUN echo $rand_content > /$rand_filename
EOF
- # The 'apk' command can take a long time to fetch files; bump timeout
- PODMAN_TIMEOUT=240 run_podman build -t build_test -f - --format=docker $tmpdir < $containerfile
+ run_podman build -t build_test -f - --format=docker $tmpdir < $containerfile
is "$output" ".*COMMIT" "COMMIT seen in log"
run_podman run --rm build_test cat /$rand_filename
@@ -188,6 +186,30 @@ EOF
run_podman rmi -f build_test $iid
}
+@test "podman build test -f ./relative" {
+ rand_filename=$(random_string 20)
+ rand_content=$(random_string 50)
+
+ tmpdir=$PODMAN_TMPDIR/build-test
+ mkdir -p $tmpdir
+ mkdir -p $PODMAN_TMPDIR/reldir
+
+ containerfile=$PODMAN_TMPDIR/reldir/Containerfile
+ cat >$containerfile <<EOF
+FROM $IMAGE
+RUN echo $rand_content > /$rand_filename
+EOF
+
+ cd $PODMAN_TMPDIR
+ run_podman build -t build_test -f ./reldir/Containerfile --format=docker $tmpdir
+ is "$output" ".*COMMIT" "COMMIT seen in log"
+
+ run_podman run --rm build_test cat /$rand_filename
+ is "$output" "$rand_content" "reading generated file in image"
+
+ run_podman rmi -f build_test
+}
+
@test "podman build - URLs" {
tmpdir=$PODMAN_TMPDIR/build-test
mkdir -p $tmpdir