Skip to content

Commit 51b2dee

Browse files
committed
Put Dockerfile into a temporary directory and fix tests
1 parent 1c932fa commit 51b2dee

File tree

3 files changed

+13
-11
lines changed

3 files changed

+13
-11
lines changed

hooks/lib/stdlib.bash

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,7 @@ compute_tag() {
5151

5252
echoerr 'DOCKERFILE'
5353
echoerr "+ ${docker_file}:${target:-"<target>"}"
54-
# Inline Dockerfile might be saved under a different name each time,
55-
# only content matters
56-
sums="$(sha1sum < "${docker_file}")"
54+
sums="$(cd ${docker_file_dir}; sha1sum $(basename ${docker_file}))"
5755
sums+="$(echo "${target}" | sha1sum)"
5856

5957
echoerr 'ARCHITECTURE'

hooks/pre-command

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,22 @@ if [ -n "${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE:-}" ]
1313
then
1414
[ -n "${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE:-}" ] &&
1515
log_fatal "Cannot specify both 'dockerfile' and 'dockerfile-inline'."
16-
docker_file="$(mktemp)"
16+
# Put the Dockerfile into a temporary directory to work around
17+
# https://github.com/docker/cli/issues/2249
18+
docker_file_dir="$(mktemp -d)"
19+
docker_file="${docker_file_dir}/Dockerfile"
1720
echo "$BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE" > "$docker_file"
18-
docker_file_dir="."
21+
context_dir="."
1922
else
2023
docker_file="${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE:-"Dockerfile"}"
21-
docker_file_dir="$(dirname "${docker_file}")"
24+
context_dir="$(dirname "${docker_file}")"
25+
docker_file_dir="${context_dir}"
2226
fi
2327
target="${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_TARGET:-}"
2428
export_env_variable="${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_EXPORT_ENV_VARIABLE:-"BUILDKITE_PLUGIN_DOCKER_IMAGE"}"
2529
exec 3>&1
2630
tag="$(compute_tag "${docker_file}" 2>&3)"
27-
context="${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_CONTEXT:-"${docker_file_dir}"}"
31+
context="${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_CONTEXT:-"${context_dir}"}"
2832

2933
build_args=()
3034
read_build_args

tests/pre-command.bats

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,14 +73,14 @@ pre_command_hook="$PWD/hooks/pre-command"
7373
export BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE="FROM stub"
7474
local repository_uri="pretend.host/path/segment/image"
7575

76-
one_time_mktemp=$(mktemp)
76+
one_time_mktemp=$(mktemp -d)
7777

7878
stub mktemp \
79-
"echo $one_time_mktemp"
79+
"-d : echo $one_time_mktemp"
8080

8181
stub docker \
8282
"pull * : false" \
83-
"build --file=$one_time_mktemp * : echo building docker image" \
83+
"build --file=$one_time_mktemp/Dockerfile * : echo building docker image" \
8484
"tag ${repository_uri}:stubbed-computed-tag ${repository_uri}:latest : echo tagged latest" \
8585
"push ${repository_uri}:stubbed-computed-tag : echo pushed stubbed-computed-tag" \
8686
"push ${repository_uri}:latest : echo pushed latest"
@@ -92,7 +92,7 @@ pre_command_hook="$PWD/hooks/pre-command"
9292
assert_line "--- Pushing tag stubbed-computed-tag"
9393
assert_line "--- Pushing tag latest"
9494

95-
assert_equal "FROM stub" "$(cat $one_time_mktemp)"
95+
assert_equal "FROM stub" "$(cat ${one_time_mktemp}/Dockerfile)"
9696

9797
unstub mktemp
9898
unstub docker

0 commit comments

Comments
 (0)