Rework hack/ and build/ directories.

* Rewrite a bunch of the hack/ directory with modular reusable bash libraries.
* Have 'build/*' build on 'hack/*'.  The stuff in build now just runs hack/* in a docker container.
* Use a docker data container to enable faster incremental builds.
* Standardize output to _output/{local,dockerized}/bin/OS/ARCH/*.  This regularized placement makes cross compilation work.
* Move travis specific scripts under hack/travis

With new dockerized incremental builds, I can do a no-op `make quick-release` in ~30s.  This is a significant improvement.
This commit is contained in:
Joe Beda
2014-10-22 16:26:59 -07:00
parent 203a3d0cec
commit 5d33ce46cc
51 changed files with 1005 additions and 789 deletions

View File

@@ -58,17 +58,21 @@ case "$(uname -m)" in
;;
esac
kubecfg="${KUBE_ROOT}/_output/build/${host_os}/${host_arch}/kubecfg"
if [[ ! -x "$kubecfg" ]]; then
kubecfg="${KUBE_ROOT}/platforms/${host_os}/${host_arch}/kubecfg"
fi
# Gather up the list of likely places and use ls to find the latest one.
locations=(
"${KUBE_ROOT}/_output/dockerized/bin/${host_os}/${host_arch}/kubecfg"
"${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}/kubecfg"
"${KUBE_ROOT}/platforms/${host_os}/${host_arch}/kubecfg"
)
kubecfg=$( (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 )
if [[ ! -x "$kubecfg" ]]; then
{
echo "It looks as if you don't have a compiled kubecfg binary."
echo
echo "If you are running from a clone of the git repo, please run"
echo "'./build/make-client.sh'. Note that this requires having Docker installed."
echo "'./build/run.sh hack/build-cross.sh'. Note that this requires having"
echo "Docker installed."
echo
echo "If you are running from a binary release tarball, something is wrong. "
echo "Look at http://kubernetes.io/ for information on how to contact the "

View File

@@ -58,17 +58,21 @@ case "$(uname -m)" in
;;
esac
kubectl="${KUBE_ROOT}/_output/build/${host_os}/${host_arch}/kubectl"
if [[ ! -x "$kubectl" ]]; then
kubectl="${KUBE_ROOT}/platforms/${host_os}/${host_arch}/kubectl"
fi
# Gather up the list of likely places and use ls to find the latest one.
locations=(
"${KUBE_ROOT}/_output/dockerized/bin/${host_os}/${host_arch}/kubectl"
"${KUBE_ROOT}/_output/local/bin/${host_os}/${host_arch}/kubectl"
"${KUBE_ROOT}/platforms/${host_os}/${host_arch}/kubectl"
)
kubectl=$( (ls -t "${locations[@]}" 2>/dev/null || true) | head -1 )
if [[ ! -x "$kubectl" ]]; then
{
echo "It looks as if you don't have a compiled kubectl binary."
echo
echo "If you are running from a clone of the git repo, please run"
echo "'./build/make-client'. Note that this requires having Docker installed."
echo "'./build/run.sh hack/build-cross.sh'. Note that this requires having"
echo "Docker installed."
echo
echo "If you are running from a binary release tarball, something is wrong. "
echo "Look at http://kubernetes.io/ for information on how to contact the "

View File

@@ -124,7 +124,8 @@ function kube-push {
# Execute prior to running tests to build a release if required for env
function test-build-release {
echo "Vagrant provider can skip release build"
# Make a release
"${KUBE_ROOT}/build/release.sh"
}
# Execute prior to running tests to initialize required structure