aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/build-all-docker-images239
-rwxr-xr-xtools/build-docker-image180
-rw-r--r--tools/gen-source-tar.sh49
-rwxr-xr-xtools/update-build-links12
-rwxr-xr-xtools/validate-links.sh8
5 files changed, 0 insertions, 488 deletions
diff --git a/tools/build-all-docker-images b/tools/build-all-docker-images
deleted file mode 100755
index dfd970426..000000000
--- a/tools/build-all-docker-images
+++ /dev/null
@@ -1,239 +0,0 @@
-#!/usr/bin/env bash
-# Depends on bash 4 and gawk
-
-TOPDIR=$(git rev-parse --show-toplevel)
-# Work in a temp dir so that developers can continue working while a build is
-# in progress
-WORKDIR=$(mktemp -d /tmp/kolla-workdir.XXXXXXXXXX)
-# Remove $WORKDIR otherwise $TOPDIR is copied *inside* of it
-rm -rf $WORKDIR
-cp -aL "$TOPDIR" $WORKDIR
-DOCKERDIR="$WORKDIR/docker"
-
-declare -A dependency
-declare -A img_dirs
-declare -A status
-
-function info {
- [[ -n $1 ]] && printf "%s\n" "$1"
-}
-
-function success {
- [[ -n $1 ]] && printf "\033[00;32m%s\033[00m\n" "$1"
-}
-
-function warn {
- [[ -n $1 ]] && printf "\033[00;31m%s\033[00m\n" "$1"
-}
-
-function set_defaults {
- PREFIX=centos-rdo-
- NAMESPACE=kollaglue
- [ -f $WORKDIR/.buildconf ] && . $WORKDIR/.buildconf
- [ -n "${FORCE_PREFIX}" ] && PREFIX="${FORCE_PREFIX}"
-}
-
-function has_changed {
- local image=$1
- # Rebuild everything unless given git revision
- # We don't really care about the order of the $FROM and $TO parameters, all
- # we need is the list of changed files between the revisions, or HEAD if
- # only one of them is specified
- [[ -z $FROM && -z $TO ]] || git diff --name-only $FROM $TO | grep -q "${img_dirs[$image]#$WORKDIR/}"
-}
-
-function requires_build {
- local image=$1
- local dep=${dependency[$image]}
- # An image requires a built if it meets the following conditions:
- # - it has instructions to build the image
- # - it hasn't been processed yet
- # - its dependency was rebuilt or its build instruction was modified
- [[ ${img_dirs[$image]} && -z ${status[$image]} ]] && \
- ([[ ${status[$dep]} == "rebuilt" ]] || has_changed $image)
-}
-
-function build_image {
- local dir=$1
- printf "\n"
- if [ -x "$dir/build" ]; then
- info "Building image in $dir"
- if $dir/build $ARGS --no-use-released-parent; then
- success "Successfully built image in $dir"
- status[$image]="rebuilt"
- else
- warn "Failed to build image in $dir"
- status[$image]="fail"
- fi
- else
- warn "Image $image does not provide build script"
- status[$image]="fail"
- fi
-}
-
-function init_image {
- local img_dir=$1
-
- set_defaults
- [ -f $WORKDIR/.buildconf ] && . $WORKDIR/.buildconf
- [ -f $img_dir/.buildconf ] && . $img_dir/.buildconf
- [ -n "$FORCE_NAMESPACE" ] && NAMESPACE=$FORCE_NAMESPACE
- [ -n "${REGISTRY}" ] && NAMESPACE="${REGISTRY}/${NAMESPACE}"
-
- local image="${NAMESPACE:+${NAMESPACE}/}${PREFIX}${img_dir##*/}"
- local base_image=$(cat $img_dir/Dockerfile | gawk 'match($0, /^\s*FROM\s+(\S+)/, matches) {print matches[1]}' )
- base_image=${base_image//%%KOLLA_NAMESPACE%%/$NAMESPACE}
- base_image=${base_image//%%KOLLA_PREFIX%%/$PREFIX}
- base_image=${base_image//:%%KOLLA_TAG%%/}
-
- img_dirs[$image]=$img_dir
- dependency[$image]=$base_image
-
- # Restore defaults to minimize risk of side effects
- set_defaults
-}
-
-function process_image {
- local image=$1
- if [ -n "${dependency[$image]}" ]; then
- process_image ${dependency[$image]}
- fi
- if requires_build $image; then
- build_image ${img_dirs[$image]}
- fi
- if [ -z "${status[$image]}" ]; then
- status[$image]="up-to-date"
- fi
-}
-
-function print_summary {
- printf "\nSummary\n=======\n"
- for image in "${!status[@]}"; do
- case "${status[$image]}" in
- ("fail") warn "Failed to process $image" ;;
- ("rebuilt") success "Rebuilt $image" ;;
- (*) info "$image: ${status[$image]}" ;;
- esac
- done
-}
-
-function print_parseable_summary {
- printf "{"
- for image in "${!status[@]}"; do
- printf "'$image':'${status[$image]}',"
- done
- printf "}"
-}
-
-function interrupted {
- info "Interrupted..."
- print_summary
- rm -rf $WORKDIR
- exit 1
-}
-
-function usage {
- read -r -d '' HELP <<EOF
-A wrapper to build-docker-image that build all images in order.
-
-Options:
-
---prefix <image_prefix>
---from <git-revision>
---to <git-revision>
-
-$($WORKDIR/tools/build-docker-image --help)
-EOF
- printf "%s\n" "${HELP/$WORKDIR\/tools\/build-docker-image/$0}"
-}
-
-trap 'interrupted' INT
-
-
-ARGS=$@
-PARSED_ARGS=$(getopt -q -o hr:n:t: -l help,prefix:,namespace:,release,tag:,private-registry:,from:,to:,testmode -- "$@")
-
-eval set -- "$PARSED_ARGS"
-
-while :; do
- case "$1" in
-
- (--help|-h) usage
- exit 0
- ;;
-
- (--prefix) shift
- FORCE_PREFIX="$1"
- ;;
-
- (--namespace|-n)
- shift
- FORCE_NAMESPACE="$1"
- ;;
-
- (--release)
- RELEASE_SPECIFIED=1
- ;;
-
- (--tag|-t)
- shift
- TAG_SPECIFIED=1
- ;;
-
- (--private-registry|-r)
- shift
- REGISTRY="$1"
- ;;
-
- (--from)
- shift
- FROM="$1"
- ARGS=${ARGS/\-\-from*$FROM/}
- ;;
-
- (--to)
- shift
- TO="$1"
- ARGS=${ARGS/\-\-to*$TO/}
- ;;
-
- (--testmode)
- TESTMODE=1
- ARGS=${ARGS/\-\-testmode/}
- ;;
-
- (--) break
- ;;
-
- esac
-
- shift
-done
-
-set_defaults
-
-# BASE == centos, fedora, ubuntu, etc.
-BASE=$(echo "${PREFIX}" | cut -d- -f1)
-# TYPE == binary, source, rdo
-TYPE=$(echo "${PREFIX}" | cut -d- -f2)
-
-# Ensure a tag is specified otherwise build may fail when changing git branch
-# The release tag is automatically appended when --release flag is used.
-if [[ $RELEASE_SPECIFIED != 1 ]] && [[ $TAG_SPECIFIED != 1 ]]; then
- TAG=$(git rev-parse --short HEAD)
- ARGS+=" --tag $TAG"
-fi
-
-# Do a first pass to find images to build and their dependencies
-for dockerfile in $(find "${DOCKERDIR}/${BASE}/${TYPE}" -name Dockerfile); do
- init_image $(dirname $dockerfile)
-done
-
-# Process all images
-for image in "${!img_dirs[@]}"; do
- process_image $image
-done
-
-print_summary
-[ -n "$TESTMODE" ] && print_parseable_summary
-rm -rf $WORKDIR
diff --git a/tools/build-docker-image b/tools/build-docker-image
deleted file mode 100755
index f7c7995e1..000000000
--- a/tools/build-docker-image
+++ /dev/null
@@ -1,180 +0,0 @@
-#!/bin/bash
-
-TOPDIR=$(git rev-parse --show-toplevel)
-IMGDIR="$(cd "$(dirname "$0")" && pwd)"
-
-. $TOPDIR/tools/validate-docker-execute
-
-RELEASE_NAMESPACE=kollaglue
-NAMESPACE=kollaglue
-PREFIX=centos-rdo-
-TAG=$(git rev-parse --short HEAD)
-RELEASE_TAG=latest
-MAX_TRIES=1
-
-usage () {
- cat <<EOF
-Usage: $0 [options]
-
-Options:
-
---prefix <image_prefix>
---private-registry, -r <registry_address[:port]>
---namespace, -n <namespace>
---tag, -t <tag>
---push, -p
---force-rm, -f
---no-cache, -N
---pull, -u
---release
---no-use-released-parent
---retry <number_of_retries>
-EOF
-}
-
-[ -f $TOPDIR/.buildconf ] && . $TOPDIR/.buildconf
-[ -f $IMGDIR/.buildinfo ] && . $IMGDIR/.buildinfo
-[ -f $IMGDIR/.buildconf ] && . $IMGDIR/.buildconf
-
-ARGS=$(getopt -o hr:n:t:pfuN -l help,prefix:,namespace:,push,pull,private-registry:,release,tag:,force-rm,no-cache,no-use-released-parent,retry: -- "$@") || { usage >&2; exit 2; }
-
-eval set -- "$ARGS"
-
-while :; do
- case "$1" in
-
- (--help|-h) usage
- exit 0
- ;;
-
- (--prefix) shift
- FORCE_PREFIX="$1"
- ;;
-
- (--release) MODE=release
- NAMESPACE=$RELEASE_NAMESPACE
- TAG=$RELEASE_TAG
- ;;
-
- (--tag|-t) shift
- TAG="$1"
- ;;
-
- (--push|-p) PUSH=1
- ;;
-
- (--pull|-u) BUILDFLAGS="${BUILDFLAGS} --pull=true"
- ;;
-
- (--force-rm|-f)
- BUILDFLAGS="${BUILDFLAGS} --force-rm=true"
- ;;
-
- (--no-cache|-N)
- BUILDFLAGS="${BUILDFLAGS} --no-cache"
- ;;
-
- (--private-registry|-r)
- shift
- REGISTRY="$1"
- ;;
-
- (--namespace|-n)
- shift
- NAMESPACE="$1"
- ;;
-
- (--no-use-released-parent)
- USE_CURRENT_TAG=1
- ;;
-
- (--retry)
- shift
- MAX_TRIES=$((MAX_TRIES + $1))
- ;;
-
- (--) break
- ;;
-
- esac
-
- shift
-done
-
-if [[ $USE_CURRENT_TAG = 1 ]]; then
- PARENT_TAG=$TAG
-else
- PARENT_TAG=$RELEASE_TAG
-fi
-
-if [ "$NAMESPACE" = "$RELEASE_NAMESPACE" ] \
- && [ "$TAG" = "$RELEASE_TAG" ] \
- && ! [ "$MODE" = "release" ]; then
-
- echo "ERROR: use --release to build a release image" >&2
- exit 1
-fi
-
-if [[ -n "${PREFIX}" && -n "${FORCE_PREFIX}" ]]; then
- PREFIX="${FORCE_PREFIX}"
-fi
-
-
-if [[ -n $REGISTRY ]]; then
- NAMESPACE="${REGISTRY}/${NAMESPACE}"
-fi
-
-IMAGE="${PREFIX}${IMGDIR##*/}"
-FULLIMAGE="${NAMESPACE}/${IMAGE}${TAG:+:${TAG}}"
-
-cat <<EOF
-======================================================================
-$FULLIMAGE
-======================================================================
-
-EOF
-
-if [ "$MODE" = "release" ]; then
- echo "*** YOU ARE BUILDING A RELEASE IMAGE ***"
- echo
-fi
-
-TMPDIR=$(mktemp -d /tmp/kolla-build.XXXXXXXXXX)
-cp -aL $IMGDIR/* $TMPDIR
-# Use an extension for in-place editing for portability, as GNU and BSD
-# versions of sed behave differently otherwise
-sed -i.bak "s|%%KOLLA_NAMESPACE%%|${NAMESPACE}|g" $TMPDIR/Dockerfile
-sed -i.bak "s|%%KOLLA_PREFIX%%|${PREFIX}|g" $TMPDIR/Dockerfile
-sed -i.bak "s|%%KOLLA_TAG%%|${PARENT_TAG}|g" $TMPDIR/Dockerfile
-
-if [[ "${SOURCE_INSTALL_AVAILABLE}" == "1" ]]; then
- . ${TOPDIR}/tools/gen-source-tar.sh
-fi
-
-TRY=0
-while [ $((MAX_TRIES - 1)) -gt $TRY ]; do
- if docker build ${BUILDFLAGS} -t "$FULLIMAGE" $TMPDIR; then
- break
- else
- echo "WARNING: failed to build $FULLIMAGE, retrying..."
- TRY=$((TRY + 1))
- fi
-done
-
-if ! docker build ${BUILDFLAGS} -t "$FULLIMAGE" $TMPDIR; then
- echo "ERROR: failed to build $FULLIMAGE"
- exit 1
-fi
-
-rm -rf $TMPDIR
-
-echo "Built: $FULLIMAGE"
-
-if [ "$PUSH" = 1 ]; then
- if ! docker push "$FULLIMAGE"; then
- echo "ERROR: failed to push $FULLIMAGE"
- exit 1
- fi
-
- echo "Pushed: $FULLIMAGE"
-fi
diff --git a/tools/gen-source-tar.sh b/tools/gen-source-tar.sh
deleted file mode 100644
index 6f3a6eb20..000000000
--- a/tools/gen-source-tar.sh
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/bash
-
-set -e
-
-: ${SOURCE_INSTALL_METHOD:=curl}
-: ${GIT_REF:=master}
-: ${LOCAL_SOURCE:=/tmp/${COMPONENT}}
-
-function fetch_source_from_uri {
- curl ${TARBALL_URI} -o ${TMPDIR}/${COMPONENT}.tar
-}
-
-function fetch_source_from_git {
- # NOTE(pbourke): do a shallow clone to master only, unless a specific ref is
- # required
- if [ -z ${GIT_REF} ]; then
- git clone --depth=1 ${CLONE_FROM} ${TMPDIR}/${COMPONENT}
- else
- git clone ${CLONE_FROM} ${TMPDIR}/${COMPONENT}
- git --git-dir ${TMPDIR}/${COMPONENT}/.git \
- --work-tree ${TMPDIR}/${COMPONENT}/ \
- checkout ${GIT_REF}
- fi
- tar -cf ${TMPDIR}/${COMPONENT}.tar -C ${TMPDIR} ${COMPONENT}
-}
-
-function fetch_source_from_local {
- tar -cf ${TMPDIR}/${COMPONENT}.tar \
- -C $(dirname ${LOCAL_SOURCE}) ${COMPONENT}
-}
-
-case ${SOURCE_INSTALL_METHOD} in
- curl)
- fetch_source_from_uri
- ;;
- git)
- fetch_source_from_git
- ;;
- local)
- fetch_source_from_local
- ;;
- *)
- cat << EOF
-Unknown install method '${SOURCE_INSTALL_METHOD}'. Please check the value of
-\$SOURCE_INSTALL_METHOD in .buildconf
-EOF
- exit 1
- ;;
-esac
diff --git a/tools/update-build-links b/tools/update-build-links
deleted file mode 100755
index 76c4df3ef..000000000
--- a/tools/update-build-links
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/bash
-
-REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
-cd "$(dirname "$REAL_PATH")/.."
-
-find docker -name Dockerfile | while read dockerfile; do
- dir=${dockerfile%/*}
- link=$(python -c 'import os,sys; print os.path.relpath(sys.argv[1], sys.argv[2])' \
- $PWD/tools/build-docker-image $dir)
- ln -sf $link $dir/build
-done
-
diff --git a/tools/validate-links.sh b/tools/validate-links.sh
deleted file mode 100755
index 671120dd5..000000000
--- a/tools/validate-links.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/bash
-
-REAL_PATH=$(python -c "import os,sys;print os.path.realpath('$0')")
-cd "$(dirname "$REAL_PATH")/.."
-
-if find . -type l -exec test ! -e {} \; -print | egrep '.*'; then
- exit 1
-fi