@@ -78,6 +78,7 @@ tag_prefix=$(jq -r '.params.tag_prefix // ""' < $payload)
78
78
additional_tags=$( jq -r ' .params.additional_tags // ""' < $payload )
79
79
need_tag_as_latest=$( jq -r ' .params.tag_as_latest // "false"' < $payload )
80
80
build_args=$( jq -r ' .params.build_args // {}' < $payload )
81
+ secrets=$( jq -r ' .params.secrets // {}' < $payload )
81
82
build_args_file=$( jq -r ' .params.build_args_file // ""' < $payload )
82
83
labels=$( jq -r ' .params.labels // {}' < $payload )
83
84
labels_file=$( jq -r ' .params.labels_file // ""' < $payload )
@@ -215,6 +216,32 @@ elif [ -n "$build" ]; then
215
216
fi
216
217
fi
217
218
219
+ expanded_secrets=()
220
+
221
+ secret_keys=($( echo " $secrets " | jq -r ' keys | join(" ")' ) )
222
+ if [ " ${# secret_keys[@]} " -gt 0 ]; then
223
+ # Force buildkit on
224
+ export DOCKER_BUILDKIT=1
225
+ for key in " ${secret_keys[@]} " ; do
226
+ value=$( echo " $secrets " | jq -r --arg " k" " $key " ' .[$k]' )
227
+ for var in BUILD_ID BUILD_NAME BUILD_JOB_NAME BUILD_PIPELINE_NAME BUILD_TEAM_NAME ATC_EXTERNAL_URL; do
228
+ value=" ${value// \$ $var / ${! var:- } } "
229
+ value=" ${value// \$\{ $var \} / ${! var:- } } "
230
+ done
231
+ secret=" id=${key} "
232
+ sub=$( jq -r " .params.secrets.${key} // {}" < $payload )
233
+ sub_keys=($( echo " $sub " | jq -r ' keys | join(" ")' ) )
234
+ if [ " ${# sub_keys[@]} " -gt 0 ]; then
235
+ expanded_secrets+=(" --secret" )
236
+ for key in " ${sub_keys[@]} " ; do
237
+ value=$( echo " $sub " | jq -r --arg " k" " $key " ' .[$k]' )
238
+ secret=" ${secret} ,${key} =${value} "
239
+ done
240
+ expanded_secrets+=(" ${secret} " )
241
+ fi
242
+ done
243
+ fi
244
+
218
245
expanded_labels=()
219
246
220
247
label_keys=($( echo " $labels " | jq -r ' keys | join(" ")' ) )
@@ -261,7 +288,7 @@ elif [ -n "$build" ]; then
261
288
# NOTE: deactivate amazon-ecr-credential-helper so that builds go through with the DOCKER_BUILDKIT set
262
289
cp ~ /.docker/config.json ~ /.docker/config.json.bak
263
290
cat <<< " $(jq 'del(.credsStore)' ~/.docker/config.json)" > ~ /.docker/config.json
264
- docker build -t " ${repository} :${tag_name} " " ${target[@]} " " ${expanded_build_args[@]} " " ${expanded_labels[@]} " " ${ssh_args[@]} " -f " $dockerfile " $cache_from " $build "
291
+ docker build -t " ${repository} :${tag_name} " " ${target[@]} " " ${expanded_build_args[@]} " " ${expanded_secrets[@]} " " ${ expanded_labels[@]}" " ${ssh_args[@]} " -f " $dockerfile " $cache_from " $build "
265
292
mv ~ /.docker/config.json.bak ~ /.docker/config.json # This restores the credsStore: ecr-login to config.json if needed
266
293
267
294
elif [ -n " $load_file " ]; then
0 commit comments