| 
					
				 | 
			
			
				@@ -18,7 +18,7 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 set -ex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-cd $(dirname $0)/../../.. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+cd "$(dirname "$0")/../../.." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 git_root=$(pwd) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 cd - 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,15 +35,15 @@ mkdir -p /tmp/xdg-cache-home 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # DOCKERHUB_ORGANIZATION - If set, pull a prebuilt image from given dockerhub org. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Use image name based on Dockerfile location checksum 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-DOCKER_IMAGE_NAME=$(basename $DOCKERFILE_DIR)_$(sha1sum $DOCKERFILE_DIR/Dockerfile | cut -f1 -d\ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+DOCKER_IMAGE_NAME=$(basename "$DOCKERFILE_DIR")_$(sha1sum "$DOCKERFILE_DIR/Dockerfile" | cut -f1 -d\ ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if [ "$DOCKERHUB_ORGANIZATION" != "" ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 then 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   DOCKER_IMAGE_NAME=$DOCKERHUB_ORGANIZATION/$DOCKER_IMAGE_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  time docker pull $DOCKER_IMAGE_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  time docker pull "$DOCKER_IMAGE_NAME" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   # Make sure docker image has been built. Should be instantaneous if so. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  docker build -t $DOCKER_IMAGE_NAME $DOCKERFILE_DIR 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  docker build -t "$DOCKER_IMAGE_NAME" "$DOCKERFILE_DIR" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 fi 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Choose random name for docker container 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -54,6 +54,8 @@ docker_instance_git_root=/var/local/jenkins/grpc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # Run tests inside docker 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 DOCKER_EXIT_CODE=0 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# TODO: silence complaint about $TTY_FLAG expansion in some other way 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# shellcheck disable=SC2086 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 docker run \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "RUN_TESTS_COMMAND=$RUN_TESTS_COMMAND" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "config=$config" \ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -61,7 +63,7 @@ docker run \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e CCACHE_DIR=/tmp/ccache \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e XDG_CACHE_HOME=/tmp/xdg-cache-home \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e THIS_IS_REALLY_NEEDED='see https://github.com/docker/docker/issues/14203 for why docker is awful' \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  -e HOST_GIT_ROOT=$git_root \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  -e HOST_GIT_ROOT="$git_root" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e LOCAL_GIT_ROOT=$docker_instance_git_root \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "BUILD_ID=$BUILD_ID" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "BUILD_URL=$BUILD_URL" \ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -70,7 +72,8 @@ docker run \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "KOKORO_BUILD_NUMBER=$KOKORO_BUILD_NUMBER" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "KOKORO_BUILD_URL=$KOKORO_BUILD_URL" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -e "KOKORO_JOB_NAME=$KOKORO_JOB_NAME" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  -i $TTY_FLAG \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  -i \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  $TTY_FLAG \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   --sysctl net.ipv6.conf.all.disable_ipv6=0 \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -v ~/.config/gcloud:/root/.config/gcloud \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -v "$git_root:$docker_instance_git_root" \ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -78,18 +81,18 @@ docker run \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -v /tmp/npm-cache:/tmp/npm-cache \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -v /tmp/xdg-cache-home:/tmp/xdg-cache-home \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   -w /var/local/git/grpc \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  --name=$CONTAINER_NAME \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-  $DOCKER_IMAGE_NAME \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  --name="$CONTAINER_NAME" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  "$DOCKER_IMAGE_NAME" \ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   bash -l "/var/local/jenkins/grpc/$DOCKER_RUN_SCRIPT" || DOCKER_EXIT_CODE=$? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # use unique name for reports.zip to prevent clash between concurrent 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # run_tests.py runs  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-TEMP_REPORTS_ZIP=`mktemp` 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-docker cp "$CONTAINER_NAME:/var/local/git/grpc/reports.zip" ${TEMP_REPORTS_ZIP} || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-unzip -o ${TEMP_REPORTS_ZIP} -d $git_root || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-rm -f ${TEMP_REPORTS_ZIP} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+TEMP_REPORTS_ZIP=$(mktemp) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+docker cp "$CONTAINER_NAME:/var/local/git/grpc/reports.zip" "${TEMP_REPORTS_ZIP}" || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+unzip -o "${TEMP_REPORTS_ZIP}" -d "$git_root" || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+rm -f "${TEMP_REPORTS_ZIP}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 # remove the container, possibly killing it first 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-docker rm -f $CONTAINER_NAME || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+docker rm -f "$CONTAINER_NAME" || true 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 exit $DOCKER_EXIT_CODE 
			 |