From a7da396a4c16bcd758e11abc86044a5a39af7189 Mon Sep 17 00:00:00 2001 From: Andrew Scheller Date: Thu, 23 Mar 2017 14:04:31 +0000 Subject: [PATCH] chore: fix copying of variables into Docker (#1203) Fixes `set -u` errors, and prevents variables being set to undefined values Change-type: patch --- scripts/build/docker/run-command.sh | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/build/docker/run-command.sh b/scripts/build/docker/run-command.sh index 1beb1734..b4a89ced 100755 --- a/scripts/build/docker/run-command.sh +++ b/scripts/build/docker/run-command.sh @@ -77,15 +77,21 @@ then ARGV_SOURCE_CODE_DIRECTORY="$PWD" fi +# Fairly ugly code that only passes environment variables into Docker when they're actually set +# see http://stackoverflow.com/a/13864829 +# and http://mywiki.wooledge.org/BashFAQ/050 +# and http://stackoverflow.com/a/7577209 +DOCKER_ENVVARS=() +for COPYVAR in AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY RELEASE_TYPE CI; do + eval "if [ ! -z \${$COPYVAR+x} ]; then DOCKER_ENVVARS+=(\"--env\" \"$COPYVAR=\$$COPYVAR\"); fi" +done + # The SYS_ADMIN capability and FUSE host device declarations # are needed to be able to build an AppImage # The `-t` and TERM setup is needed to display coloured output. docker run -t \ --env "TERM=xterm-256color" \ - --env "AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID" \ - --env "AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY" \ - --env "RELEASE_TYPE=$RELEASE_TYPE" \ - --env "CI=$CI" \ + ${DOCKER_ENVVARS[@]+"${DOCKER_ENVVARS[@]}"} \ --cap-add SYS_ADMIN \ --device /dev/fuse:/dev/fuse:mrw \ --volume "$ARGV_SOURCE_CODE_DIRECTORY:/etcher" \