ray/.buildkite/pipeline.yml
Eric Liang 990b0ec934
Move linkcheck into a separate CI build
Why are these changes needed?
Linkcheck is inherently flaky, so separate it from the normal LINT build which is never flaky. This also separates the verbose linkcheck logs, making it easier to read the LINT output.
2022-03-29 01:08:53 -07:00

406 lines
19 KiB
YAML

- label: ":ferris_wheel: Wheels and Jars"
conditions:
[
"RAY_CI_LINUX_WHEELS_AFFECTED",
"RAY_CI_JAVA_AFFECTED",
]
commands:
# Build the wheels and jars
- LINUX_WHEELS=1 LINUX_JARS=1 ./ci/travis/ci.sh build
- bash ./java/build-jar-multiplatform.sh linux
# 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/linux
# 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/linux; fi
- label: ":ferris_wheel: Post-wheel tests"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=post_wheel_build
--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
--test_env=RAY_CI_POST_WHEEL_TESTS=True
python/ray/tests/... python/ray/serve/... python/ray/tune/... rllib/... doc/...
- label: ":ferris_wheel: Debug Wheels"
conditions:
[
"RAY_CI_LINUX_WHEELS_AFFECTED",
"RAY_CI_JAVA_AFFECTED",
]
commands:
# Build the debug wheels
- RAY_DEBUG_BUILD=debug LINUX_WHEELS=1 ./ci/travis/ci.sh build
# Upload the wheels.
# 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
# Upload to latest directory.
- if [ "$BUILDKITE_BRANCH" == "master" ]; then python .buildkite/copy_files.py --destination wheels --path ./.whl; fi
# Not working now.
# - label: ":ferris_wheel: ASAN Wheels"
# conditions:
# [
# "RAY_CI_LINUX_WHEELS_AFFECTED",
# "RAY_CI_JAVA_AFFECTED",
# ]
# commands:
# # Build the asan wheels
# - RAY_DEBUG_BUILD=asan LINUX_WHEELS=1 ./ci/travis/ci.sh build
# # Upload the wheels.
# # 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
# # Upload to latest directory.
# - if [ "$BUILDKITE_BRANCH" == "master" ]; then python .buildkite/copy_files.py --destination wheels --path ./.whl; fi
- label: ":docker: Build Images: py36 (1/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py36 --device-types cpu cu101 cu102 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py36 (2/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py36 --device-types cu110 cu111 cu112 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py37 (1/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py37 --device-types cpu cu101 cu102 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py37 (2/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py37 --device-types cu110 cu111 cu112 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py38 (1/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py38 --device-types cpu cu101 cu102 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py38 (2/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py38 --device-types cu110 cu111 cu112 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py39 (1/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py39 --device-types cpu cu101 cu102 --build-type BUILDKITE --build-base
- label: ":docker: Build Images: py39 (2/2)"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker aws_requests_auth boto3
- if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then python .buildkite/copy_files.py --destination docker_login; fi
- python ./ci/travis/build-docker-images.py --py-versions py39 --device-types cu110 cu111 cu112 --build-type BUILDKITE --build-base
- label: ":book: Lint"
commands:
- export LINT=1
- ./ci/travis/install-dependencies.sh
- ./ci/travis/ci.sh lint
- ./ci/travis/ci.sh build
- label: ":book: LinkCheck"
commands:
- export LINT=1
- ./ci/travis/install-dependencies.sh
- ./ci/travis/ci.sh check_sphinx_links
- label: ":java: Java"
conditions: ["RAY_CI_JAVA_AFFECTED"]
commands:
- ./java/test.sh
- label: ":cpp: Ray CPP Worker"
conditions: [ "RAY_CI_CPP_AFFECTED" ]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- ./ci/travis/ci.sh test_cpp
- label: ":cpp: Tests"
conditions: [ "RAY_CI_CORE_CPP_AFFECTED" ]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci --config=llvm $(./scripts/bazel_export_options)
--build_tests_only
-- //:all -rllib/... -core_worker_test
- label: ":cpp: Tests (ASAN)"
conditions: [ "RAY_CI_CORE_CPP_AFFECTED" ]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci --config=asan-clang $(./scripts/bazel_export_options)
--build_tests_only
--jobs=2
-- //:all -//:core_worker_test
- label: ":cpp: Tests (UBSAN)"
conditions: [ "RAY_CI_CORE_CPP_AFFECTED" ]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci --config=ubsan $(./scripts/bazel_export_options)
--build_tests_only
--jobs=2
-- //:all -//:core_worker_test -//:logging_test
- label: ":cpp: Tests (TSAN)"
conditions: [ "RAY_CI_CORE_CPP_AFFECTED" ]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci --config=tsan-clang $(./scripts/bazel_export_options)
--build_tests_only
--jobs=2
-- //:all -//:core_worker_test -//:event_test -//:gcs_actor_manager_test
-//:gcs_placement_group_manager_test -//:gcs_placement_group_scheduler_test
-//:gcs_server_rpc_test -//:gcs_client_test
-//:metric_exporter_client_test -//:stats_test -//:worker_pool_test
- label: ":serverless: Dashboard Tests"
conditions:
[
"RAY_CI_DASHBOARD_AFFECTED",
"RAY_CI_PYTHON_AFFECTED",
]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- ./dashboard/tests/run_ui_tests.sh
- bazel test --config=ci $(./scripts/bazel_export_options) python/ray/dashboard/...
- label: ":serverless: Serve Release Tests"
conditions:
[
"RAY_CI_SERVE_AFFECTED",
"RAY_CI_PYTHON_AFFECTED",
]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- TORCH_VERSION=1.6 ./ci/travis/install-dependencies.sh
- 'git clone https://github.com/wg/wrk.git /tmp/wrk && pushd /tmp/wrk && make -j && sudo cp wrk /usr/local/bin && popd'
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=team:serve
release/...
- label: ":serverless: Serve Tests"
parallelism: 3
conditions:
[
"RAY_CI_SERVE_AFFECTED",
"RAY_CI_PYTHON_AFFECTED",
]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- TORCH_VERSION=1.6 ./ci/travis/install-dependencies.sh
- 'git clone https://github.com/wg/wrk.git /tmp/wrk && pushd /tmp/wrk && make -j && sudo cp wrk /usr/local/bin && popd'
- >-
set -x;
python ./scripts/bazel-sharding.py
--exclude_manual
--index "\${BUILDKITE_PARALLEL_JOB}" --count "\${BUILDKITE_PARALLEL_JOB_COUNT}"
python/ray/serve/...
> test_shard.txt
- cat test_shard.txt
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=-post_wheel_build
$(cat test_shard.txt)
- label: ":python: Minimal install"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- ./ci/travis/install-minimal.sh
- ./ci/travis/env_info.sh
- python ./ci/travis/check_minimal_install.py
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_basic
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_basic_2
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_basic_3
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_basic_4
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_basic_5
- bazel test --test_output=streamed --config=ci --test_env=RAY_MINIMAL=1 $(./scripts/bazel_export_options)
python/ray/tests/test_output
- bazel test --test_output=streamed --config=ci --test_env=RAY_MINIMAL=1 $(./scripts/bazel_export_options)
python/ray/tests/test_runtime_env_ray_minimal
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_runtime_env
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_runtime_env_2
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_runtime_env_complicated
- bazel test --test_output=streamed --config=ci $(./scripts/bazel_export_options)
python/ray/tests/test_runtime_env_validation
- bazel test --test_output=streamed --config=ci --test_env=RAY_MINIMAL=1 $(./scripts/bazel_export_options)
python/ray/tests/test_serve_ray_minimal
- bazel test --test_output=streamed --config=ci --test_env=RAY_MINIMAL=1 $(./scripts/bazel_export_options)
python/ray/dashboard/test_dashboard
- bazel test --test_output=streamed --config=ci --test_env=RAY_MINIMAL=1 $(./scripts/bazel_export_options)
python/ray/tests/test_usage_stats
- label: ":python: Default install"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- ./ci/travis/install-default.sh
- ./ci/travis/env_info.sh
- bazel test --test_output=streamed --config=ci --test_env=RAY_DEFAULT=1 $(./scripts/bazel_export_options)
python/ray/dashboard/test_dashboard
- label: ":python: Release test package unit tests"
conditions: ["ALWAYS"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- pip install -e release/
- bazel test --config=ci $(./scripts/bazel_export_options)
--build_tests_only
--test_tag_filters=release_unit
release/...
- label: ":python: (Small & Client)"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=client_tests,small_size_python_tests
-- python/ray/tests/...
- label: ":python: (Large)"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
parallelism: 3
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- . ./ci/travis/ci.sh test_large
- label: ":python: (Medium A-J)"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=-kubernetes,medium_size_python_tests_a_to_j
python/ray/tests/...
- label: ":python: (Medium K-Z)"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=-kubernetes,medium_size_python_tests_k_to_z
python/ray/tests/...
- label: ":python: Debug Test"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- pip uninstall -y ray
- RAY_DEBUG_BUILD=debug ./ci/travis/ci.sh build
- bazel test --config=ci-debug $(./scripts/bazel_export_options)
--test_tag_filters=-kubernetes,debug_tests
python/ray/tests/...
- label: ":python: (ASAN tests)"
conditions: ["RAY_CI_PYTHON_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- RLLIB_TESTING=1 ./ci/travis/install-dependencies.sh
- pip install "grpcio >= 1.28.1, <= 1.43.0"
- bazel test --config=ci --config=asan $(./scripts/bazel_export_options)
--config=asan-buildkite
--test_tag_filters=-kubernetes,asan_tests
--test_env=CONDA_EXE
--test_env=CONDA_PYTHON_EXE
--test_env=CONDA_SHLVL
--test_env=CONDA_PREFIX
--test_env=CONDA_DEFAULT_ENV
python/ray/tests/...
# https://github.com/ray-project/ray/issues/22460
#- label: ":python: (Privileged test)"
#conditions: ["RAY_CI_PYTHON_AFFECTED"]
#commands:
#- LINUX_WHEELS=1 ./ci/travis/ci.sh build
#- pip install docker
#We build image ray-worker-container:nightly-py36-cpu which have installed podman,but not push it.
#And we save this image to a tarball, so that we can load it to podman image storage in the
#nested-container which run tests. And in this nested-container, Raylet will start ray worker
#process in double-nested-container.
#- python ./ci/travis/build-docker-images.py --py-versions py36 --device-types cpu --build-type BUILDKITE --only-build-worker-container
#- mkdir /ray-mount/containers
#- docker save -o /ray-mount/containers/images.tar rayproject/ray-worker-container:nightly-py36-cpu
#- docker run --rm --privileged -v /ray/containers:/var/lib/containers -v /ray:/ray --entrypoint /bin/bash
#rayproject/ray-worker-container:nightly-py36-cpu /ray/ci/travis/test-worker-in-container.sh
- label: ":octopus: Tune soft imports test"
conditions: ["RAY_CI_TUNE_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
# no TUNE_TESTING=1 on purpose
- ./ci/travis/install-dependencies.sh
- bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=soft_imports python/ray/tune/...
- label: ":steam_locomotive: Train minimal install"
conditions: ["RAY_CI_TRAIN_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
- ./ci/travis/install-minimal.sh
- ./ci/travis/env_info.sh
- python ./ci/travis/check_minimal_install.py
- bazel test --config=ci $(./scripts/bazel_export_options) --build_tests_only --test_tag_filters=minimal python/ray/train/...
- label: ":kubernetes: operator"
conditions: ["RAY_CI_LINUX_WHEELS_AFFECTED"]
commands:
- cleanup() { if [ "${BUILDKITE_PULL_REQUEST}" = "false" ]; then ./ci/travis/upload_build_info.sh; fi }; trap cleanup EXIT
# Set up local kind cluster.
- ./ci/travis/prep-k8s-environment.sh
# Build py37-cpu Ray image for the test.
- LINUX_WHEELS=1 ./ci/travis/ci.sh build
- pip install -q docker
- python ci/travis/build-docker-images.py --py-versions py37 --device-types cpu --build-type LOCAL --build-base
# Tag the image built in the last step. We want to be sure to distinguish the image from the real Ray nightly.
- docker tag rayproject/ray:nightly-py37-cpu ray-ci:kuberay-test
# Load the image into the kind node.
- kind load docker-image ray-ci:kuberay-test
- bazel test --config=ci $(./scripts/bazel_export_options)
--test_tag_filters=kuberay_operator
--test_env=RAY_IMAGE=docker.io/library/ray-ci:kuberay-test
--test_env=KUBECONFIG=/root/.kube/config
python/ray/tests/...