Skip to content

Commit

Permalink
Merge branch 'ray-project:master' into master
Browse files Browse the repository at this point in the history
  • Loading branch information
TanjaBayer authored Aug 12, 2021
2 parents a5a2c46 + 3e010c5 commit 78ef40b
Show file tree
Hide file tree
Showing 2,445 changed files with 186,151 additions and 69,789 deletions.
34 changes: 24 additions & 10 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,26 @@ build --enable_platform_specific_config
build --action_env=PATH
# For --compilation_mode=dbg, consider enabling checks in the standard library as well (below).
build --compilation_mode=opt
#build --cxxopt="-std=c++11"
build:linux --cxxopt="-std=c++14"
build:macos --cxxopt="-std=c++14"
build:clang-cl --cxxopt="-std=c++14"
build:msvc --cxxopt="/std:c++14"
# This workaround is needed to prevent Bazel from compiling the same file twice (once PIC and once not).
build:linux --force_pic
build:macos --force_pic
build:clang-cl --compiler=clang-cl
build:msvc --compiler=msvc-cl
# `LC_ALL` and `LANG` is needed for cpp worker tests, because they will call "ray start".
# If we don't add them, python's `click` library will raise an error.
test --action_env=LC_ALL
test --action_env=LANG
build --action_env=LC_ALL
build --action_env=LANG
# Allow C++ worker tests to execute "ray start" with the correct version of Python.
test --action_env=VIRTUAL_ENV
test --action_env=PYENV_VIRTUAL_ENV
test --action_env=PYENV_VERSION
test --action_env=PYENV_SHELL
test --action_env=RAY_ENABLE_NEW_SCHEDULER
build --action_env=VIRTUAL_ENV
build --action_env=PYENV_VIRTUAL_ENV
build --action_env=PYENV_VERSION
build --action_env=PYENV_SHELL
# This is needed for some core tests to run correctly
test:windows --enable_runfiles
build:windows --enable_runfiles
# TODO(mehrdadn): Revert the "-\\.(asm|S)$" exclusion when this Bazel bug
# for compiling assembly files is fixed on Windows:
# https://github.com/bazelbuild/bazel/issues/8924
Expand Down Expand Up @@ -92,7 +94,7 @@ build:asan --linkopt -fsanitize=address
test:asan --jobs=1
test:asan --test_env=ASAN_OPTIONS="detect_leaks=0"
# This LD_PRELOAD is set for Travis. You will need to change it for local debugging.
test:asan --test_env=LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libasan.so.2 /usr/lib/gcc/x86_64-linux-gnu/7/libasan.so"
test:asan --test_env=LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libasan.so.5 /usr/lib/gcc/x86_64-linux-gnu/9/libasan.so"
# For example, for Ubuntu 18.04 libasan can be found here:
# test:asan --test_env=LD_PRELOAD="/usr/lib/gcc/x86_64-linux-gnu/7/libasan.so"
test:asan-buildkite --test_env=LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libasan.so.5"
Expand All @@ -118,6 +120,13 @@ test:ci --nocache_test_results
test:ci --spawn_strategy=local
test:ci --test_output=errors
test:ci --test_verbose_timeout_warnings
test:ci-debug -c dbg
test:ci-debug --copt="-g"
test:ci-debug --flaky_test_attempts=3
test:ci-debug --nocache_test_results
test:ci-debug --spawn_strategy=local
test:ci-debug --test_output=errors
test:ci-debug --test_verbose_timeout_warnings

aquery:get-toolchain --include_commandline=false
aquery:get-toolchain --noimplicit_deps
Expand All @@ -128,3 +137,8 @@ test:strace --run_under="bash -c 'if command -v strace >/dev/null && strace -qq
# [Linux] Uncomment this line (or use --config) to preload libSegFault.so if available, to print a stack trace on aborts and segfault. (Note: This doesn't always work.)
#test:linux --config=segfault
test:segfault --run_under="bash -c 'unset GREP_OPTIONS && if ! grep -q -o Microsoft /proc/version 2>/dev/null; then libs=\"$(command -v ldconfig >/dev/null && ldconfig -p | grep -F -o -e \"libSegFault.so\" | uniq | tr \"\\\\n\" :)\" && if [ -n \"${libs%:}\" ]; then export SEGFAULT_SIGNALS=\"abrt segv\" LD_PRELOAD=\"${libs}${LD_PRELOAD-}\"; fi; fi && \"$@\"' -"

# Debug build:
build:debug -c dbg
build:debug --copt="-g"
build:debug --strip="never"
23 changes: 22 additions & 1 deletion .buildkite/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ FROM ubuntu:focal

ARG REMOTE_CACHE_URL
ARG BUILDKITE_PULL_REQUEST
ARG BUILDKITE_COMMIT
ARG BUILDKITE_PULL_REQUEST_BASE_BRANCH

ENV DEBIAN_FRONTEND=noninteractive
ENV TZ=America/Los_Angeles
Expand All @@ -11,13 +13,28 @@ ENV CI=true
ENV PYTHON=3.6
ENV RAY_USE_RANDOM_PORTS=1
ENV RAY_DEFAULT_BUILD=1
ENV RAY_INSTALL_JAVA=1
ENV BUILDKITE_PULL_REQUEST=${BUILDKITE_PULL_REQUEST}
ENV BUILDKITE_COMMIT=${BUILDKITE_COMMIT}
ENV BUILDKITE_PULL_REQUEST_BASE_BRANCH=${BUILDKITE_PULL_REQUEST_BASE_BRANCH}
# For wheel build
# https://github.com/docker-library/docker/blob/master/20.10/docker-entrypoint.sh
ENV DOCKER_TLS_CERTDIR=/certs
ENV DOCKER_HOST=tcp://docker:2376
ENV DOCKER_TLS_VERIFY=1
ENV DOCKER_CERT_PATH=/certs/client
ENV TRAVIS_COMMIT=${BUILDKITE_COMMIT}
ENV BUILDKITE_BAZEL_CACHE_URL=${REMOTE_CACHE_URL}

RUN apt-get update -qq
RUN apt-get install -y -qq \
curl python-is-python3 git build-essential \
sudo unzip apt-utils dialog tzdata wget rsync \
language-pack-en tmux cmake gdb vim htop \
libgtk2.0-dev zlib1g-dev libgl1-mesa-dev
libgtk2.0-dev zlib1g-dev libgl1-mesa-dev maven \
openjdk-8-jre openjdk-8-jdk clang-format-7
RUN ln -s /usr/bin/clang-format-7 /usr/bin/clang-format
RUN curl -o- https://get.docker.com | sh

# System conf for tests
RUN locale -a
Expand All @@ -37,3 +54,7 @@ WORKDIR /ray
COPY . .
RUN ./ci/travis/ci.sh init
RUN bash --login -i ./ci/travis/ci.sh build

# Run determine test to run
RUN bash --login -i -c "python ./ci/travis/determine_tests_to_run.py --output=json > affected_set.json"
RUN cat affected_set.json
114 changes: 114 additions & 0 deletions .buildkite/copy_files.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
import argparse
import os
from collections import OrderedDict
import sys
import time
import subprocess
from typing import List

from aws_requests_auth.boto_utils import BotoAWSRequestsAuth
import requests


def retry(f):
def inner():
resp = None
for _ in range(5):
resp = f()
print("Getting Presigned URL, status_code", resp.status_code)
if resp.status_code >= 500:
print("errored, retrying...")
print(resp.text)
time.sleep(5)
else:
return resp
if resp is None or resp.status_code >= 500:
print("still errorred after many retries")
sys.exit(1)

return inner


@retry
def perform_auth():
auth = BotoAWSRequestsAuth(
aws_host="vop4ss7n22.execute-api.us-west-2.amazonaws.com",
aws_region="us-west-2",
aws_service="execute-api",
)
resp = requests.get(
"https://vop4ss7n22.execute-api.us-west-2.amazonaws.com/endpoint/",
auth=auth,
params={"job_id": os.environ["BUILDKITE_JOB_ID"]})
return resp


def handle_docker_login(resp):
pwd = resp.json()["docker_password"]
subprocess.call(
["docker", "login", "--username", "raytravisbot", "--password", pwd])


def gather_paths(dir_path) -> List[str]:
assert os.path.exists(dir_path)
if os.path.isdir(dir_path):
paths = [os.path.join(dir_path, f) for f in os.listdir(dir_path)]
else:
paths = [dir_path]
return paths


dest_resp_mapping = {
"wheels": "presigned_resp_prod_wheels",
"branch_wheels": "presigned_resp_prod_wheels",
"jars": "presigned_resp_prod_wheels",
"branch_jars": "presigned_resp_prod_wheels",
"logs": "presigned_logs",
}


def upload_paths(paths, resp, destination):
dest_key = dest_resp_mapping[destination]
c = resp.json()[dest_key]
of = OrderedDict(c["fields"])

sha = os.environ["BUILDKITE_COMMIT"]
branch = os.environ["BUILDKITE_BRANCH"]
bk_job_id = os.environ["BUILDKITE_JOB_ID"]

for path in paths:
fn = os.path.split(path)[-1]
of["key"] = {
"wheels": f"latest/{fn}",
"branch_wheels": f"{branch}/{sha}/{fn}",
"jars": f"jars/latest/{fn}",
"branch_jars": f"jars/{branch}/{sha}/{fn}",
"logs": f"bazel_events/{branch}/{sha}/{bk_job_id}/{fn}"
}[destination]
of["file"] = open(path, "rb")
r = requests.post(c["url"], files=of)
print(f"Uploaded {path} to {of['key']}", r.status_code)


if __name__ == "__main__":
parser = argparse.ArgumentParser(
description="Helper script to upload files to S3 bucket")
parser.add_argument("--path", type=str, required=False)
parser.add_argument("--destination", type=str)
args = parser.parse_args()

assert args.destination in {
"branch_jars", "branch_wheels", "jars", "logs", "wheels",
"docker_login"
}
assert "BUILDKITE_JOB_ID" in os.environ
assert "BUILDKITE_COMMIT" in os.environ

resp = perform_auth()

if args.destination == "docker_login":
handle_docker_login(resp)
else:
paths = gather_paths(args.path)
print("Planning to upload", paths)
upload_paths(paths, resp, args.destination)
114 changes: 114 additions & 0 deletions .buildkite/pipeline.macos.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
common: &common
artifact_paths:
- "/tmp/bazel_event_logs/*"
env:
BUILDKITE: "true"
CI: "true"
PYTHON: "3.6"
RAY_USE_RANDOM_PORTS: "1"
RAY_DEFAULT_BUILD: "1"
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8

prelude_commands: &prelude_commands |-
./ci/travis/upload_build_info.sh
(which bazel && bazel clean) || true;
. ./ci/travis/ci.sh init && source ~/.zshrc
. ./ci/travis/ci.sh build
./ci/travis/install-dependencies.sh

epilogue_commands: &epilogue_commands |-
# Cleanup runtime environment to save storage
rm -rf /tmp/ray
# Cleanup local caches (this shouldn't clean up global disk cache)
bazel clean

steps:
- label: ":mac: :apple: Wheels and Jars"
<<: *common
commands:
# Cleanup environments
- ./ci/travis/upload_build_info.sh
- (which bazel && bazel clean) || true
# TODO(simon): make sure to change both PR and wheel builds
# Special setup for jar builds (will be installed to the machine instead)
# - brew remove --force java & brew uninstall --force java & rm -rf /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask
# - brew install --cask adoptopenjdk/openjdk/adoptopenjdk8
- diskutil list external physical
- export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
- java -version
# Build wheels
- export MAC_WHEELS=1
- export MAC_JARS=1
- export RAY_INSTALL_JAVA=1
- . ./ci/travis/ci.sh init && source ~/.zshrc
- . ./ci/travis/ci.sh build
# Test wheels
- . ./ci/travis/ci.sh test_wheels
# Build jars
- bash ./java/build-jar-multiplatform.sh darwin
# Upload the wheels and jars
# We don't want to push on PRs, in fact, the copy_files will fail because unauthenticated.
- if [ "$BUILDKITE_PULL_REQUEST" != "false" ]; then exit 0; fi
- pip install -q docker aws_requests_auth boto3
# Upload to branch directory.
- python .buildkite/copy_files.py --destination branch_wheels --path ./.whl
- python .buildkite/copy_files.py --destination branch_jars --path ./.jar/darwin
# Upload to latest directory.
- if [ "$BUILDKITE_BRANCH" == "master" ]; then python .buildkite/copy_files.py --destination wheels --path ./.whl; fi
- if [ "$BUILDKITE_BRANCH" == "master" ]; then python .buildkite/copy_files.py --destination jars --path ./.jar/darwin; fi


- label: ":mac: :apple: Ray C++ and Libraries"
<<: *common
commands:
- *prelude_commands
- TORCH_VERSION=1.6 ./ci/travis/install-dependencies.sh
- bazel test --config=ci --test_env=CI $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=-flaky,-flaky-mac --
//:all python/ray/serve/... python/ray/new_dashboard/... -rllib/... -core_worker_test
- *epilogue_commands

- label: ":mac: :apple: Small and Large"
<<: *common
commands:
- *prelude_commands
- bazel test $(./scripts/bazel_export_options) --config=ci
--test_env=CONDA_EXE --test_env=CONDA_PYTHON_EXE --test_env=CONDA_SHLVL --test_env=CONDA_PREFIX
--test_env=CONDA_DEFAULT_ENV --test_env=CONDA_PROMPT_MODIFIER --test_env=CI
--test_tag_filters=-kubernetes,-jenkins_only,-medium_size_python_tests_a_to_j,-medium_size_python_tests_k_to_z,-flaky,-flaky-mac
python/ray/tests/...
- *epilogue_commands

- label: ":mac: :apple: Medium A-J"
<<: *common
commands:
- *prelude_commands
- bazel test --config=ci $(./scripts/bazel_export_options) --test_env=CI
--test_tag_filters=-kubernetes,-jenkins_only,medium_size_python_tests_a_to_j,-flaky,-flaky-mac
python/ray/tests/...
- *epilogue_commands

- label: ":mac: :apple: Medium K-Z"
<<: *common
commands:
- *prelude_commands
- bazel test --config=ci $(./scripts/bazel_export_options) --test_env=CI
--test_tag_filters=-kubernetes,-jenkins_only,medium_size_python_tests_k_to_z,-flaky,-flaky-mac
python/ray/tests/...
- *epilogue_commands

- label: ":mac: :apple: :snowflake: Flaky"
<<: *common
commands:
- *prelude_commands
- ./ci/travis/install-dependencies.sh
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=-kubernetes,-jenkins_only,flaky,flaky-mac
--test_env=CONDA_EXE
--test_env=CONDA_PYTHON_EXE
--test_env=CONDA_SHLVL
--test_env=CONDA_PREFIX
--test_env=CONDA_DEFAULT_ENV
--test_env=CI
python/ray/tests/... python/ray/serve/...
- *epilogue_commands
Loading

0 comments on commit 78ef40b

Please sign in to comment.