mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Reorganize build script file for clarity
This commit is contained in:
		
							
								
								
									
										136
									
								
								build/common.sh
									
									
									
									
									
								
							
							
						
						
									
										136
									
								
								build/common.sh
									
									
									
									
									
								
							@@ -44,6 +44,9 @@ readonly KUBE_RUN_BINARIES="
 | 
				
			|||||||
    proxy
 | 
					    proxy
 | 
				
			||||||
  "
 | 
					  "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Basic setup functions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Verify that the right utilities and such are installed for building Kube.
 | 
					# Verify that the right utilities and such are installed for building Kube.
 | 
				
			||||||
function verify-prereqs() {
 | 
					function verify-prereqs() {
 | 
				
			||||||
  if [[ -z "$(which docker)" ]]; then
 | 
					  if [[ -z "$(which docker)" ]]; then
 | 
				
			||||||
@@ -105,23 +108,8 @@ function verify-gcs-prereqs() {
 | 
				
			|||||||
  fi
 | 
					  fi
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Create a unique bucket name for releasing Kube and make sure it exists.
 | 
					# ---------------------------------------------------------------------------
 | 
				
			||||||
function ensure-gcs-release-bucket() {
 | 
					# Building
 | 
				
			||||||
  if which md5 > /dev/null; then
 | 
					 | 
				
			||||||
    HASH=$(md5 -q -s "$GCLOUD_PROJECT")
 | 
					 | 
				
			||||||
  else
 | 
					 | 
				
			||||||
    HASH=$(echo -n "$GCLOUD_PROJECT" | md5sum)
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
  HASH=${HASH:0:5}
 | 
					 | 
				
			||||||
  KUBE_RELEASE_BUCKET=${KUBE_RELEASE_BUCKET-kubernetes-releases-$HASH}
 | 
					 | 
				
			||||||
  KUBE_RELEASE_PREFIX=${KUBE_RELEASE_PREFIX-devel/}
 | 
					 | 
				
			||||||
  KUBE_DOCKER_REG_PREFIX=${KUBE_DOCKER_REG_PREFIX-docker-reg/}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  if ! gsutil ls gs://${KUBE_RELEASE_BUCKET} >/dev/null 2>&1 ; then
 | 
					 | 
				
			||||||
    echo "Creating Google Cloud Storage bucket: $RELEASE_BUCKET"
 | 
					 | 
				
			||||||
    gsutil mb gs://${KUBE_RELEASE_BUCKET}
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Set up the context directory for the kube-build image and build it.
 | 
					# Set up the context directory for the kube-build image and build it.
 | 
				
			||||||
function build-image() {
 | 
					function build-image() {
 | 
				
			||||||
@@ -188,6 +176,73 @@ function docker-build() {
 | 
				
			|||||||
  set -e
 | 
					  set -e
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Run a command in the kube-build image.  This assumes that the image has
 | 
				
			||||||
 | 
					# already been built.  This will sync out all output data from the build.
 | 
				
			||||||
 | 
					function run-build-command() {
 | 
				
			||||||
 | 
					  [[ -n "$@" ]] || { echo "Invalid input." >&2; return 4; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  local -r DOCKER="docker run --rm --name=${DOCKER_CONTAINER_NAME} -it ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  docker rm ${DOCKER_CONTAINER_NAME} >/dev/null 2>&1 || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  ${DOCKER} "$@"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# If the Docker server is remote, copy the results back out.
 | 
				
			||||||
 | 
					function copy-output() {
 | 
				
			||||||
 | 
					  if [[ "$OSTYPE" == "darwin"* ]]; then
 | 
				
			||||||
 | 
					    # When we are on the Mac with boot2docker Now we need to copy the results
 | 
				
			||||||
 | 
					    # back out.  Ideally we would leave the container around and use 'docker cp'
 | 
				
			||||||
 | 
					    # to copy the results out.  However, that doesn't work for mounted volumes
 | 
				
			||||||
 | 
					    # currently (https://github.com/dotcloud/docker/issues/1992).  And it is
 | 
				
			||||||
 | 
					    # just plain broken (https://github.com/dotcloud/docker/issues/6483).
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # The easiest thing I (jbeda) could figure out was to launch another
 | 
				
			||||||
 | 
					    # container pointed at the same volume, tar the output directory and ship
 | 
				
			||||||
 | 
					    # that tar over stdou.
 | 
				
			||||||
 | 
					    local DOCKER="docker run -a stdout --rm --name=${DOCKER_CONTAINER_NAME} ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Kill any leftover container
 | 
				
			||||||
 | 
					    docker rm ${DOCKER_CONTAINER_NAME} >/dev/null 2>&1 || true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    echo "+++ Syncing back output directory from boot2docker VM"
 | 
				
			||||||
 | 
					    mkdir -p "${LOCAL_OUTPUT_DIR}"
 | 
				
			||||||
 | 
					    rm -rf "${LOCAL_OUTPUT_DIR}/*"
 | 
				
			||||||
 | 
					    ${DOCKER} sh -c "tar c -C ${REMOTE_OUTPUT_DIR} ."  \
 | 
				
			||||||
 | 
					      | tar xv -C "${LOCAL_OUTPUT_DIR}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # I (jbeda) also tried getting rsync working using 'docker run' as the
 | 
				
			||||||
 | 
					    # 'remote shell'.  This mostly worked but there was a hang when
 | 
				
			||||||
 | 
					    # closing/finishing things off. Ug.
 | 
				
			||||||
 | 
					    #
 | 
				
			||||||
 | 
					    # local DOCKER="docker run -i --rm --name=${DOCKER_CONTAINER_NAME} ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
				
			||||||
 | 
					    # DOCKER+=" bash -c 'shift ; exec \"\$@\"' --"
 | 
				
			||||||
 | 
					    # rsync --blocking-io -av -e "${DOCKER}" foo:${REMOTE_OUTPUT_DIR}/ ${LOCAL_OUTPUT_DIR}
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# ---------------------------------------------------------------------------
 | 
				
			||||||
 | 
					# Release
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# Create a unique bucket name for releasing Kube and make sure it exists.
 | 
				
			||||||
 | 
					function ensure-gcs-release-bucket() {
 | 
				
			||||||
 | 
					  if which md5 > /dev/null; then
 | 
				
			||||||
 | 
					    HASH=$(md5 -q -s "$GCLOUD_PROJECT")
 | 
				
			||||||
 | 
					  else
 | 
				
			||||||
 | 
					    HASH=$(echo -n "$GCLOUD_PROJECT" | md5sum)
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					  HASH=${HASH:0:5}
 | 
				
			||||||
 | 
					  KUBE_RELEASE_BUCKET=${KUBE_RELEASE_BUCKET-kubernetes-releases-$HASH}
 | 
				
			||||||
 | 
					  KUBE_RELEASE_PREFIX=${KUBE_RELEASE_PREFIX-devel/}
 | 
				
			||||||
 | 
					  KUBE_DOCKER_REG_PREFIX=${KUBE_DOCKER_REG_PREFIX-docker-reg/}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if ! gsutil ls gs://${KUBE_RELEASE_BUCKET} >/dev/null 2>&1 ; then
 | 
				
			||||||
 | 
					    echo "Creating Google Cloud Storage bucket: $RELEASE_BUCKET"
 | 
				
			||||||
 | 
					    gsutil mb gs://${KUBE_RELEASE_BUCKET}
 | 
				
			||||||
 | 
					  fi
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function ensure-gcs-docker-registry() {
 | 
					function ensure-gcs-docker-registry() {
 | 
				
			||||||
  local -r REG_CONTAINER_NAME="gcs-registry"
 | 
					  local -r REG_CONTAINER_NAME="gcs-registry"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -234,50 +289,3 @@ function push-images-to-gcs() {
 | 
				
			|||||||
  done
 | 
					  done
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Run a command in the kube-build image.  This assumes that the image has
 | 
					 | 
				
			||||||
# already been built.  This will sync out all output data from the build.
 | 
					 | 
				
			||||||
function run-build-command() {
 | 
					 | 
				
			||||||
  [[ -n "$@" ]] || { echo "Invalid input." >&2; return 4; }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  local -r DOCKER="docker run --rm --name=${DOCKER_CONTAINER_NAME} -it ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  docker rm ${DOCKER_CONTAINER_NAME} >/dev/null 2>&1 || true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ${DOCKER} "$@"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# If the Docker server is remote, copy the results back out.
 | 
					 | 
				
			||||||
function copy-output() {
 | 
					 | 
				
			||||||
  if [[ "$OSTYPE" == "darwin"* ]]; then
 | 
					 | 
				
			||||||
    # When we are on the Mac with boot2docker Now we need to copy the results
 | 
					 | 
				
			||||||
    # back out.  Ideally we would leave the container around and use 'docker cp'
 | 
					 | 
				
			||||||
    # to copy the results out.  However, that doesn't work for mounted volumes
 | 
					 | 
				
			||||||
    # currently (https://github.com/dotcloud/docker/issues/1992).  And it is
 | 
					 | 
				
			||||||
    # just plain broken (https://github.com/dotcloud/docker/issues/6483).
 | 
					 | 
				
			||||||
    #
 | 
					 | 
				
			||||||
    # The easiest thing I (jbeda) could figure out was to launch another
 | 
					 | 
				
			||||||
    # container pointed at the same volume, tar the output directory and ship
 | 
					 | 
				
			||||||
    # that tar over stdou.
 | 
					 | 
				
			||||||
    local DOCKER="docker run -a stdout --rm --name=${DOCKER_CONTAINER_NAME} ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # Kill any leftover container
 | 
					 | 
				
			||||||
    docker rm ${DOCKER_CONTAINER_NAME} >/dev/null 2>&1 || true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    echo "+++ Syncing back output directory from boot2docker VM"
 | 
					 | 
				
			||||||
    mkdir -p "${LOCAL_OUTPUT_DIR}"
 | 
					 | 
				
			||||||
    rm -rf "${LOCAL_OUTPUT_DIR}/*"
 | 
					 | 
				
			||||||
    ${DOCKER} sh -c "tar c -C ${REMOTE_OUTPUT_DIR} ."  \
 | 
					 | 
				
			||||||
      | tar xv -C "${LOCAL_OUTPUT_DIR}"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # I (jbeda) also tried getting rsync working using 'docker run' as the
 | 
					 | 
				
			||||||
    # 'remote shell'.  This mostly worked but there was a hang when
 | 
					 | 
				
			||||||
    # closing/finishing things off. Ug.
 | 
					 | 
				
			||||||
    #
 | 
					 | 
				
			||||||
    # local DOCKER="docker run -i --rm --name=${DOCKER_CONTAINER_NAME} ${DOCKER_MOUNT} ${KUBE_BUILD_IMAGE}"
 | 
					 | 
				
			||||||
    # DOCKER+=" bash -c 'shift ; exec \"\$@\"' --"
 | 
					 | 
				
			||||||
    # rsync --blocking-io -av -e "${DOCKER}" foo:${REMOTE_OUTPUT_DIR}/ ${LOCAL_OUTPUT_DIR}
 | 
					 | 
				
			||||||
  fi
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user