Enable concurrent CI builds (#1236)

Currently, only one CI build can be started at the same time due to we only have only one testing cluster. This PR aims to enable multiple concurrent builds can be triggered to reduce the waiting time for CI builds. The major changes listed below:

1. Each build generate unique images for testing and debugging
2. Check whether the testing cluster is being used by another build.
3. Cache docker image & go mod after build finished
4. Improve dockerfiles for reusing docker build cache
This commit is contained in:
Ta-Ching Chen
2019-07-15 16:33:26 +08:00
committed by GitHub
parent a9dd4bf81a
commit fe8fa94c77
14 changed files with 194 additions and 85 deletions
Executable
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
set -euo pipefail
# Unbound variables cause failure, so this readable if block instead of Parameter Expansion
if [[ ${TRAVIS_EVENT_TYPE+NOVALUE} == "cronNOVALUE" ]]
then
echo "Skipping build & test, this is cron job for fission upgrade tests"
exit 0
fi
if [ ! -f ${HOME}/.kube/config ]
then
echo "Skipping end to end tests, no cluster credentials"
exit 0
fi
source $(dirname $0)/test_utils.sh
dump_system_info
setupCIBuildEnv
load_docker_cache ${DOCKER_CACHE_DIR}/python-env.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/jvm-env.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/go-env.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/tensorflow-serving-env.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/python-builder.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/jvm-builder.tar.gz;
load_docker_cache ${DOCKER_CACHE_DIR}/go-builder.tar.gz;
build_and_push_fission_bundle $REPO/$IMAGE:$TAG
build_and_push_pre_upgrade_check_image $PRE_UPGRADE_CHECK_IMAGE:$TAG
build_and_push_fetcher $FETCHER_IMAGE:$TAG
build_and_push_builder $BUILDER_IMAGE:$TAG
build_and_push_env_runtime python $REPO/python-env:$TAG ""
build_and_push_env_runtime jvm $REPO/jvm-env:$TAG ""
build_and_push_env_runtime go $REPO/go-env:$TAG "1.12"
build_and_push_env_runtime tensorflow-serving $REPO/tensorflow-serving-env:$TAG ""
build_and_push_env_builder python $REPO/python-env-builder:$TAG $BUILDER_IMAGE:$TAG ""
build_and_push_env_builder jvm $REPO/jvm-env-builder:$TAG $BUILDER_IMAGE:$TAG ""
build_and_push_env_builder go $REPO/go-env-builder:$TAG $BUILDER_IMAGE:$TAG "1.12"
build_fission_cli