diff --git a/.travis.yml b/.travis.yml index 312a9da9b..98a8b4425 100644 --- a/.travis.yml +++ b/.travis.yml @@ -43,7 +43,7 @@ matrix: - . ./ci/travis/ci.sh build script: # Run all C++ unit tests with ASAN enabled. ASAN adds too much overhead to run Python tests. - - bazel test --config=ci --build_tests_only -- //:all + - bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only -- //:all - os: osx osx_image: xcode7 @@ -83,7 +83,7 @@ matrix: - . ./ci/travis/ci.sh build script: # Streaming cpp test. - - if [ $RAY_CI_STREAMING_CPP_AFFECTED == "1" ]; then bazel test --config=ci --test_output=all //streaming:all && bash streaming/src/test/run_streaming_queue_test.sh; fi + - if [ $RAY_CI_STREAMING_CPP_AFFECTED == "1" ]; then bazel test --config=ci $(./scripts/bazel_export_options) --test_output=all //streaming:all && bash streaming/src/test/run_streaming_queue_test.sh; fi - if [ $RAY_CI_STREAMING_PYTHON_AFFECTED == "1" ]; then python -m pytest -v --durations=5 --timeout=300 streaming/python/tests/; fi - if [ $RAY_CI_STREAMING_JAVA_AFFECTED == "1" ]; then ./streaming/java/test.sh; fi @@ -146,7 +146,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=learning_tests_tf rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=learning_tests_tf rllib/... # RLlib: Learning tests with tf=1.x (from rllib/tuned_examples/*.yaml). # Requested by Edi (MS): Test all learning capabilities with tf1.x @@ -163,7 +163,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=learning_tests_tf rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=learning_tests_tf rllib/... # RLlib: Learning tests with torch (from rllib/tuned_examples/*.yaml). - os: linux @@ -179,7 +179,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=learning_tests_torch rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=learning_tests_torch rllib/... # RLlib: Quick Agent train.py runs (compilation & running, no(!) learning). # Agent single tests (compilation, loss-funcs, etc..). @@ -196,10 +196,10 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=quick_train rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=quick_train rllib/... # Test everything that does not have any of the "main" labels: # "learning_tests|quick_train|examples|tests_dir". - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-learning_tests_tf,-learning_tests_torch,-quick_train,-examples,-tests_dir rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-learning_tests_tf,-learning_tests_torch,-quick_train,-examples,-tests_dir rllib/... # RLlib: Everything in rllib/examples/ directory. - os: linux @@ -215,10 +215,10 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=examples_A,examples_B rllib/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=examples_C,examples_D rllib/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=examples_E,examples_F,examples_G,examples_H,examples_I,examples_J,examples_K,examples_L,examples_M,examples_N,examples_O,examples_P rllib/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=examples_Q,examples_R,examples_S,examples_T,examples_U,examples_V,examples_W,examples_X,examples_Y,examples_Z rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=examples_A,examples_B rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=examples_C,examples_D rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=examples_E,examples_F,examples_G,examples_H,examples_I,examples_J,examples_K,examples_L,examples_M,examples_N,examples_O,examples_P rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=examples_Q,examples_R,examples_S,examples_T,examples_U,examples_V,examples_W,examples_X,examples_Y,examples_Z rllib/... # RLlib: tests_dir: Everything in rllib/tests/ directory (A-L). - os: linux @@ -234,7 +234,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=tests_dir_A,tests_dir_B,tests_dir_C,tests_dir_D,tests_dir_E,tests_dir_F,tests_dir_G,tests_dir_H,tests_dir_I,tests_dir_J,tests_dir_K,tests_dir_L rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=tests_dir_A,tests_dir_B,tests_dir_C,tests_dir_D,tests_dir_E,tests_dir_F,tests_dir_G,tests_dir_H,tests_dir_I,tests_dir_J,tests_dir_K,tests_dir_L rllib/... # RLlib: tests_dir: Everything in rllib/tests/ directory (M-Z). - os: linux @@ -250,7 +250,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=tests_dir_M,tests_dir_N,tests_dir_O,tests_dir_P,tests_dir_Q,tests_dir_R,tests_dir_S,tests_dir_T,tests_dir_U,tests_dir_V,tests_dir_W,tests_dir_X,tests_dir_Y,tests_dir_Z rllib/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=tests_dir_M,tests_dir_N,tests_dir_O,tests_dir_P,tests_dir_Q,tests_dir_R,tests_dir_S,tests_dir_T,tests_dir_U,tests_dir_V,tests_dir_W,tests_dir_X,tests_dir_Y,tests_dir_Z rllib/... # Tune: Tests and examples. @@ -267,11 +267,11 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --test_tag_filters=-jenkins_only,-example python/ray/tune/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=example,-tf,-pytorch,-py37,-flaky python/ray/tune/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=tf,-pytorch,-py37,-flaky python/ray/tune/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-tf,pytorch,-py37,-flaky python/ray/tune/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-py37,flaky python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --test_tag_filters=-jenkins_only,-example python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=example,-tf,-pytorch,-py37,-flaky python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=tf,-pytorch,-py37,-flaky python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-tf,pytorch,-py37,-flaky python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-py37,flaky python/ray/tune/... # SGD: Tests and examples. - os: linux @@ -288,9 +288,9 @@ matrix: - . ./ci/travis/ci.sh build script: # No such tests at the moment: - # - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-tf,-pytorch,-py37 python/ray/util/sgd/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=tf,-pytorch,-py37 python/ray/util/sgd/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-tf,pytorch,-py37 python/ray/util/sgd/... + # - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-tf,-pytorch,-py37 python/ray/util/sgd/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=tf,-pytorch,-py37 python/ray/util/sgd/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-tf,pytorch,-py37 python/ray/util/sgd/... # Docs: Tests and examples. - os: linux @@ -306,9 +306,9 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-tf,-pytorch,-py37 doc/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=tf,-pytorch,-py37 doc/... - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=-tf,pytorch,-py37 doc/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-tf,-pytorch,-py37 doc/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=tf,-pytorch,-py37 doc/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-tf,pytorch,-py37 doc/... # Tune/SGD: Python >= 3.7 tests and examples. - os: linux @@ -323,7 +323,7 @@ matrix: before_script: - . ./ci/travis/ci.sh build script: - - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=py37 python/ray/tune/... + - ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=py37 python/ray/tune/... # There are no python 3.7 tests for RaySGD at the moment # - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=py37 python/ray/util/sgd/... # - ./ci/keep_alive bazel test --config=ci --build_tests_only --test_tag_filters=py37 doc/... @@ -345,10 +345,10 @@ script: - ./ci/suppress_output bash src/ray/test/run_object_manager_tests.sh # cc bazel tests (w/o RLlib) - - ./ci/suppress_output bazel test --config=ci --build_tests_only -- //:all -rllib/... + - ./ci/suppress_output bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only -- //:all -rllib/... # ray serve tests - - if [ $RAY_CI_SERVE_AFFECTED == "1" ]; then ./ci/keep_alive bazel test --config=ci --test_tag_filters=-jenkins_only python/ray/serve/...; fi + - if [ $RAY_CI_SERVE_AFFECTED == "1" ]; then ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --test_tag_filters=-jenkins_only python/ray/serve/...; fi # ray dashboard tests - if [ "$RAY_CI_DASHBOARD_AFFECTED" == "1" ]; then ./ci/keep_alive bazel test python/ray/dashboard/...; fi @@ -361,7 +361,7 @@ script: - mypy --strict ./ci/travis/check_typing_bad.py && return 1 || return 0 # bazel python tests. This should be run last to keep its logs at the end of travis logs. - - if [ $RAY_CI_PYTHON_AFFECTED == "1" ]; then ./ci/keep_alive bazel test --config=ci --test_tag_filters=-jenkins_only python/ray/tests/...; fi + - if [ $RAY_CI_PYTHON_AFFECTED == "1" ]; then ./ci/keep_alive bazel test --config=ci $(./scripts/bazel_export_options) --test_tag_filters=-jenkins_only python/ray/tests/...; fi # NO MORE TESTS BELOW, keep them above. deploy: @@ -430,6 +430,26 @@ deploy: branch: master condition: $MULTIPLATFORM_JARS = 1 || $MAC_JARS = 1 + - provider: script + edge: true # This supposedly opts in to deploy v2. + script: ./ci/get_build_info.py > /tmp/bazel_event_logs/metadata.json + skip_cleanup: true + + # Upload bazel event logs to s3 + - provider: s3 + edge: true + access_key_id: AKIAQQPDA73RF7PSLH5N + secret_access_key: + secure: ai2YP/R3G86HuARvaMKG6tjzei5EqL/TR5pMDuT5JKjpWt4YFcvdAXcN4F2EEvKdJ+gwVEbACa37M5fJ3YMlforCrk/YiOQI15Ixjo9NhNonLp95NhCDKgKwQIgXXKBzk2ylXUm8FbLqnW6MRJyOb7ioufRLEtpy35XcYCyzqeDZgdhn9eIsP4O2W17ws3WqKvbbMFs2rTnDqlRYqDBO+dCGcaWdaKdX8VDjoCMkko7Yh8Mh1zne3KFHZvcknGTI3DggJMtaY77Fx3FfJSO2Gp7R8ARWGWTJqNkK/H0YGnlnJ84Za15qeozkvP5Ct9SvRQf0Pg96oj73IevVrs0lLjFfCkp+fC+gVYAXfMhDfXO7rVRUyXoXrsFcEBbGNGzu3awCsZIkECD0JVadsV4ypxUCmygd2+3aHgRY1+crwbnBvNmHk+qyoN82TH1FmtOP4FyvF3/OJaL0Cn9KVoeoRW3yH2SLbyE/yNDHwsADMJEFVXv4VuHctdRoAPujt+mxU8Jz0AzJd2CqUPXePriWTyRqPBDi3mOhAu0KyX+G/r7o7C+ZIUU1bTXRHtKQqFuWq9KF43H80G7EnN1Bwq1wXpGQjzGH6SdflLRC8uf2vCUeD9Xgd/E2b0wJM07PfQ0aPuKUoZfJZECuA7o+5adB7mSfVg+brF0xvl67DIp2lDE= + bucket: ray-travis-log + # acl: public_read # This data won't be used externally. We can always turn on public_read later. + region: us-west-2 + local_dir: /tmp/bazel_event_logs + upload-dir: "bazel_events/$TRAVIS_BRANCH/$TRAVIS_COMMIT/$TRAVIS_JOB_ID" + on: + repo: ray-project/ray + branch: master + - provider: script edge: true # This supposedly opts in to deploy v2. script: ./ci/keep_alive bash $TRAVIS_BUILD_DIR/ci/travis/build-docker-images.sh diff --git a/ci/travis/bazel_export_options b/ci/travis/bazel_export_options new file mode 100755 index 000000000..7c672787b --- /dev/null +++ b/ci/travis/bazel_export_options @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +mkdir -p /tmp/bazel_event_logs +echo "--build_event_json_file $(mktemp /tmp/bazel_event_logs/bazel_log.XXXXX)" diff --git a/ci/travis/get_build_info.py b/ci/travis/get_build_info.py new file mode 100755 index 000000000..3fa20747b --- /dev/null +++ b/ci/travis/get_build_info.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python +""" +This script gathers build metadata from Travis environment variables and Travis +APIs. + +Usage: +$ python get_build_info.py +{ + "json": ["containing", "build", "metadata"] +} +""" + +import os +import json + +import requests + + +def get_build_env(): + keys = [ + "TRAVIS_BRANCH", "TRAVIS_BUILD_ID", "TRAVIS_BUILD_NUMBER", + "TRAVIS_BUILD_WEB_URL", "TRAVIS_COMMIT", "TRAVIS_COMMIT_MESSAGE", + "TRAVIS_DIST", "TRAVIS_JOB_ID", "TRAVIS_JOB_NUMBER", + "TRAVIS_JOB_WEB_URL", "TRAVIS_OS_NAME" + ] + return {key: os.environ.get(key) for key in keys} + + +def get_build_config(): + url = "https://api.travis-ci.com/job/{job_id}?include=job.config" + url = url.format(job_id=os.environ["TRAVIS_JOB_ID"]) + resp = requests.get(url, headers={"Travis-API-Version": "3"}) + return resp.json() + + +if __name__ == "__main__": + build_env = get_build_env() + build_config = get_build_config() + + print( + json.dumps( + { + "build_env": build_env, + "build_config": build_config + }, indent=2))