From b93d6813aea9414ffb00e9a753502e68159afe8e Mon Sep 17 00:00:00 2001 From: Simon Mo Date: Thu, 28 May 2020 09:38:16 -0700 Subject: [PATCH] Build from source in Jenkins (#8255) --- ci/jenkins_tests/run_doc_tests.sh | 6 ++++- ci/jenkins_tests/run_multi_node_tests.sh | 3 ++- ci/jenkins_tests/run_sgd_tests.sh | 6 ++++- ci/jenkins_tests/run_tune_tests.sh | 7 +++++- docker/tune_test/build_from_source.Dockerfile | 24 +++++++++++++++++++ 5 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 docker/tune_test/build_from_source.Dockerfile diff --git a/ci/jenkins_tests/run_doc_tests.sh b/ci/jenkins_tests/run_doc_tests.sh index 4eaa18b2f..e1444b8c8 100755 --- a/ci/jenkins_tests/run_doc_tests.sh +++ b/ci/jenkins_tests/run_doc_tests.sh @@ -26,7 +26,11 @@ if [ "$DOCKER_SHA" == "" ]; then # Add Ray source git rev-parse HEAD > ./docker/tune_test/git-rev git archive -o ./docker/tune_test/ray.tar $(git rev-parse HEAD) - DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + if [ "$CI_BUILD_FROM_SOURCE" == "1" ]; then + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test -f docker/tune_test/build_from_source.Dockerfile) + else + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + fi fi echo "Using Docker image" $DOCKER_SHA diff --git a/ci/jenkins_tests/run_multi_node_tests.sh b/ci/jenkins_tests/run_multi_node_tests.sh index 88ff1a00a..c219fa648 100755 --- a/ci/jenkins_tests/run_multi_node_tests.sh +++ b/ci/jenkins_tests/run_multi_node_tests.sh @@ -5,5 +5,6 @@ ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE:-$0}")"; pwd) export RUN_TUNE_TESTS=1 export RUN_DOC_TESTS=1 export RUN_SGD_TESTS=1 +export CI_BUILD_FROM_SOURCE=1 -bash $ROOT_DIR/entry_point.sh \ No newline at end of file +bash $ROOT_DIR/entry_point.sh diff --git a/ci/jenkins_tests/run_sgd_tests.sh b/ci/jenkins_tests/run_sgd_tests.sh index 444b510b0..12a35c310 100755 --- a/ci/jenkins_tests/run_sgd_tests.sh +++ b/ci/jenkins_tests/run_sgd_tests.sh @@ -26,7 +26,11 @@ if [ "$DOCKER_SHA" == "" ]; then # Add Ray source git rev-parse HEAD > ./docker/tune_test/git-rev git archive -o ./docker/tune_test/ray.tar $(git rev-parse HEAD) - DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + if [ "$CI_BUILD_FROM_SOURCE" == "1" ]; then + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test -f docker/tune_test/build_from_source.Dockerfile) + else + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + fi fi echo "Using Docker image" $DOCKER_SHA diff --git a/ci/jenkins_tests/run_tune_tests.sh b/ci/jenkins_tests/run_tune_tests.sh index aa3c9a684..35810a8ed 100755 --- a/ci/jenkins_tests/run_tune_tests.sh +++ b/ci/jenkins_tests/run_tune_tests.sh @@ -26,7 +26,12 @@ if [ "$DOCKER_SHA" == "" ]; then # Add Ray source git rev-parse HEAD > ./docker/tune_test/git-rev git archive -o ./docker/tune_test/ray.tar $(git rev-parse HEAD) - DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + + if [ "$CI_BUILD_FROM_SOURCE" == "1" ]; then + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test -f docker/tune_test/build_from_source.Dockerfile) + else + DOCKER_SHA=$(docker build --no-cache -q -t ray-project/tune_test docker/tune_test) + fi fi echo "Using Docker image" $DOCKER_SHA diff --git a/docker/tune_test/build_from_source.Dockerfile b/docker/tune_test/build_from_source.Dockerfile new file mode 100644 index 000000000..15f71b215 --- /dev/null +++ b/docker/tune_test/build_from_source.Dockerfile @@ -0,0 +1,24 @@ +# The stress_test Docker image build a self-contained Ray instance for launching Ray. + +FROM ray-project/base-deps + +RUN pip install -U pip + +# We install this after the latest wheels -- this should not override the latest wheels. +# Needed to run Tune example with a 'plot' call - which does not actually render a plot, but throws an error. +RUN pip install torch==1.4.0+cpu torchvision==0.5.0+cpu -f https://download.pytorch.org/whl/torch_stable.html +RUN pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.1.0-cp36-cp36m-manylinux2010_x86_64.whl + +COPY requirements.txt . +RUN pip install -r requirements.txt + +# We port the source code in so that we run the most up-to-date stress tests. +ADD ray.tar /ray +ADD git-rev /ray/git-rev + +RUN bash /ray/ci/travis/install-bazel.sh +RUN echo 'build --remote_cache="https://storage.googleapis.com/ray-bazel-cache"' >> $HOME/.bashrc +RUN echo 'build --remote_upload_local_results=false' >> $HOME/.bashrc +RUN cd /ray/python; pip install -e . --verbose + +WORKDIR /ray