File tree Expand file tree Collapse file tree 4 files changed +64
-4
lines changed Expand file tree Collapse file tree 4 files changed +64
-4
lines changed Original file line number Diff line number Diff line change @@ -89,6 +89,23 @@ steps:
89
89
- docker#v3.3.0
90
90
` ` `
91
91
92
+ Alternatively, Dockerfile can be embedded inline :
93
+
94
+ ` ` ` yaml
95
+ steps:
96
+ - command: echo wow
97
+ plugins:
98
+ - seek-oss/docker-ecr-cache#v1.9.0:
99
+ dockerfile-inline: |
100
+ FROM node:16-alpine
101
+ WORKDIR /workdir
102
+ COPY package.json package-lock.json /workdir
103
+ RUN npm install
104
+
105
+
106
+ - docker#v3.3.0
107
+ ` ` `
108
+
92
109
# ## Specifying a target step
93
110
94
111
A [multi-stage Docker build] can be used to reduce an application container to
Original file line number Diff line number Diff line change @@ -51,7 +51,7 @@ compute_tag() {
51
51
52
52
echoerr ' DOCKERFILE'
53
53
echoerr " + ${docker_file} :${target:- " <target>" } "
54
- sums=" $( sha1sum " $ {docker_file}" ) "
54
+ sums=" $( cd ${docker_file_dir} ; sha1sum $( basename $ {docker_file}) ) "
55
55
sums+=" $( echo " ${target} " | sha1sum) "
56
56
57
57
echoerr ' ARCHITECTURE'
Original file line number Diff line number Diff line change @@ -9,13 +9,26 @@ source "$(dirname "${BASH_SOURCE[0]}")/lib/${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_R
9
9
login
10
10
configure_registry_for_image_if_necessary
11
11
image=" $( get_registry_url) "
12
- docker_file=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE:- " Dockerfile" } "
12
+ if [ -n " ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE:- } " ]
13
+ then
14
+ [ -n " ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE:- } " ] &&
15
+ log_fatal " Cannot specify both 'dockerfile' and 'dockerfile-inline'."
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"
20
+ echo " $BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE " > " $docker_file "
21
+ context_dir=" ."
22
+ else
23
+ docker_file=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE:- " Dockerfile" } "
24
+ context_dir=" $( dirname " ${docker_file} " ) "
25
+ docker_file_dir=" ${context_dir} "
26
+ fi
13
27
target=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_TARGET:- } "
14
28
export_env_variable=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_EXPORT_ENV_VARIABLE:- " BUILDKITE_PLUGIN_DOCKER_IMAGE" } "
15
29
exec 3>&1
16
30
tag=" $( compute_tag " ${docker_file} " 2>&3 ) "
17
- docker_file_dir=" $( dirname " ${docker_file} " ) "
18
- context=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_CONTEXT:- " ${docker_file_dir} " } "
31
+ context=" ${BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_CONTEXT:- " ${context_dir} " } "
19
32
20
33
build_args=()
21
34
read_build_args
Original file line number Diff line number Diff line change @@ -67,3 +67,33 @@ pre_command_hook="$PWD/hooks/pre-command"
67
67
68
68
unstub docker
69
69
}
70
+
71
+ @test " Tags and pushes with inline Dockerfile" {
72
+ export BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_REGISTRY_PROVIDER=" stub"
73
+ export BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_DOCKERFILE_INLINE=" FROM stub"
74
+ local repository_uri=" pretend.host/path/segment/image"
75
+
76
+ one_time_mktemp=$( mktemp -d)
77
+
78
+ stub mktemp \
79
+ " -d : echo $one_time_mktemp "
80
+
81
+ stub docker \
82
+ " pull * : false" \
83
+ " build --file=$one_time_mktemp /Dockerfile * : echo building docker image" \
84
+ " tag ${repository_uri} :stubbed-computed-tag ${repository_uri} :latest : echo tagged latest" \
85
+ " push ${repository_uri} :stubbed-computed-tag : echo pushed stubbed-computed-tag" \
86
+ " push ${repository_uri} :latest : echo pushed latest"
87
+ run " ${pre_command_hook} "
88
+
89
+ assert_success
90
+ assert_line " --- Pulling image"
91
+ assert_line " --- Building image"
92
+ assert_line " --- Pushing tag stubbed-computed-tag"
93
+ assert_line " --- Pushing tag latest"
94
+
95
+ assert_equal " FROM stub" " $( cat ${one_time_mktemp} /Dockerfile) "
96
+
97
+ unstub mktemp
98
+ unstub docker
99
+ }
You can’t perform that action at this time.
0 commit comments