blob: 9f369c5917592b7a4f5166af1dce178c2e87666d [file] [edit]
---
minimum_bazel_version: &minimum_bazel_version "7.4.1"
minimum_bazel_shell_commands: &minimum_bazel_shell_commands
- echo "build --build_runfile_links" >> user.bazelrc
aspects_flags: &aspects_flags
- "--config=rustfmt"
- "--config=clippy"
min_rust_version_shell_commands: &min_rust_version_shell_commands
- sed -i 's|^rust_register_toolchains(|rust_register_toolchains(versions = ["1.85.0"],\n|' WORKSPACE.bazel
- sed -i 's|^rust\.toolchain(|rust.toolchain(versions = ["1.85.0"],\n|' MODULE.bazel
nightly_flags: &nightly_flags
- "--//rust/toolchain/channel=nightly"
nightly_aspects_flags: &nightly_aspects_flags
- "--//rust/toolchain/channel=nightly"
- "--config=rustfmt"
- "--config=clippy"
single_rust_channel_targets: &single_rust_channel_targets
- "--"
- "//..."
# TODO: Remove this and replace `cargo_bootstrap_repository` with a
# http_archive for a release: https://github.com/cross-rs/cross/issues/1356
- "-//crate_universe/tools/cross_installer/..."
# These tests are expected to fail as they require both a nightly and stable toolchain.
- "-//test/unit/channel_transitions/..."
- "-//test/unpretty/..."
single_rust_channel_min_version_targets: &single_rust_channel_min_version_targets
# START - Copied from 'single_rust_channel_targets'.
# TODO: Figure out how to do proper list inheritance.
- "--"
- "//..."
# TODO: Remove this and replace `cargo_bootstrap_repository` with a
# http_archive for a release: https://github.com/cross-rs/cross/issues/1356
- "-//crate_universe/tools/cross_installer/..."
# These tests are expected to fail as they require both a nightly and stable toolchain.
- "-//test/unit/channel_transitions/..."
- "-//test/unpretty/..."
# END - Copied from 'single_rust_channel_targets'.
#
# These tests exercise behavior only available versions of Rust >1.80
- "-//test/unit/lint_flags/..."
default_linux_targets: &default_linux_targets
- "--"
- "//..."
default_rbe_targets: &default_rbe_targets
- "--"
- "//..."
# These require the upstream tools wrapper to include a stdlib, which doesn't currently work on RBE.
# We should fix this. See https://github.com/bazelbuild/rules_rust/issues/3252
- "-//cargo/private/cargo_toml_variable_extractor/testdata/..."
default_macos_targets: &default_macos_targets
- "--"
- "//..."
# Not sure why this doesn't work on bazelci, it does locally on macOS.
- "-//test/unit/remap_path_prefix:integration_test"
default_windows_targets: &default_windows_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
# Panic backtraces appear not to work well on Windows.
- "-//test/unit/remap_path_prefix:integration_test"
coverage_validation_post_shell_commands: &coverage_validation_post_shell_commands
- |
grep -q '^SF:.*\.rs$' bazel-out/_coverage/_coverage_report.dat \
|| { 1>&2 echo "Failed to find any Rust coverage" \
; 1>&2 cat bazel-out/_coverage/_coverage_report.dat \
; exit 1 \
; }
- |
grep -q '^LF:[1-9]' bazel-out/_coverage/_coverage_report.dat \
|| { 1>&2 echo "Coverage report has no line data" \
; 1>&2 head -50 bazel-out/_coverage/_coverage_report.dat \
; exit 1 \
; }
split_coverage_postprocessing_shell_commands: &split_coverage_postprocessing_shell_commands
- echo "coverage --experimental_fetch_all_coverage_outputs" >> user.bazelrc
- echo "coverage --experimental_split_coverage_postprocessing" >> user.bazelrc
- echo "build --//rust/settings:experimental_use_coverage_metadata_files" >> user.bazelrc
rbe_coverage_flags: &rbe_coverage_flags
# https://github.com/bazelbuild/bazel/issues/20578
- "--strategy=CoverageReport=local"
tasks:
ubuntu2204:
build_targets: *default_linux_targets
test_targets: *default_linux_targets
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
run_targets:
- //test:query_test_binary
rbe_ubuntu2204:
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_targets: *default_rbe_targets
test_targets: *default_rbe_targets
coverage_targets: *default_rbe_targets
coverage_flags: *rbe_coverage_flags
post_shell_commands: *coverage_validation_post_shell_commands
macos:
platform: macos_arm64
build_targets: *default_macos_targets
test_targets: *default_macos_targets
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
windows:
build_targets: *default_windows_targets
test_targets: *default_windows_targets
windows_with_runfiles:
name: With Runfiles
platform: windows
batch_commands:
- echo startup --windows_enable_symlinks > user.bazelrc
- echo common --noenable_runfiles >> user.bazelrc
build_targets: *default_windows_targets
test_targets: *default_windows_targets
ubuntu2204_split_coverage_postprocessing:
name: Split Coverage Postprocessing
platform: ubuntu2204
shell_commands: *split_coverage_postprocessing_shell_commands
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
macos_split_coverage_postprocessing:
name: Split Coverage Postprocessing
platform: macos_arm64
shell_commands: *split_coverage_postprocessing_shell_commands
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
ubuntu2204_opt:
name: Opt Mode
platform: ubuntu2204
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags:
- "--compilation_mode=opt"
test_flags:
- "--compilation_mode=opt"
macos_opt:
name: Opt Mode
platform: macos_arm64
build_targets: *default_macos_targets
test_targets: *default_macos_targets
build_flags:
- "--compilation_mode=opt"
test_flags:
- "--compilation_mode=opt"
windows_opt:
name: Opt Mode
platform: windows
build_flags:
- "--compilation_mode=opt"
test_flags:
- "--compilation_mode=opt"
build_targets: *default_windows_targets
test_targets: *default_windows_targets
ubuntu2204_with_aspects:
name: With Aspects
platform: ubuntu2204
build_flags: *aspects_flags
build_targets: *default_linux_targets
test_targets: *default_linux_targets
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
rbe_ubuntu2204_with_aspects:
name: With Aspects
platform: rbe_ubuntu2204
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags: *aspects_flags
build_targets: *default_rbe_targets
test_targets: *default_rbe_targets
coverage_targets: *default_rbe_targets
coverage_flags: *rbe_coverage_flags
post_shell_commands: *coverage_validation_post_shell_commands
rbe_ubuntu2204_rolling_with_aspects:
name: RBE Rolling Bazel Version With Aspects
platform: rbe_ubuntu2204
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_targets: *default_rbe_targets
test_targets: *default_rbe_targets
coverage_targets: *default_rbe_targets
coverage_flags: *rbe_coverage_flags
post_shell_commands: *coverage_validation_post_shell_commands
build_flags: *aspects_flags
soft_fail: yes
bazel: "rolling"
macos_with_aspects:
name: With Aspects
platform: macos_arm64
build_flags: *aspects_flags
build_targets: *default_macos_targets
test_targets: *default_macos_targets
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
macos_rolling_with_aspects:
name: "Macos Rolling Bazel Version With Aspects"
platform: macos_arm64
build_flags: *aspects_flags
build_targets: *default_macos_targets
test_targets: *default_macos_targets
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
soft_fail: yes
bazel: "rolling"
windows_with_aspects:
name: With Aspects
platform: windows
build_flags:
- "--config=rustfmt"
- "--config=clippy"
build_targets: *default_windows_targets
test_targets: *default_windows_targets
windows_no_runfiles_with_aspects:
name: With Runfiles With Aspects
platform: windows
batch_commands:
- echo startup --windows_enable_symlinks > user.bazelrc
- echo common --noenable_runfiles >> user.bazelrc
build_flags:
- "--config=rustfmt"
- "--config=clippy"
test_flags:
- "--config=rustfmt"
- "--config=clippy"
build_targets: *default_windows_targets
test_targets: *default_windows_targets
windows_rolling_with_aspects:
name: "Windows Rolling Bazel Version With Aspects"
platform: windows
build_flags:
- "--config=rustfmt"
- "--config=clippy"
build_targets: *default_windows_targets
test_targets: *default_windows_targets
soft_fail: yes
bazel: "rolling"
ubuntu2204_unpretty:
name: Unpretty
platform: ubuntu2204
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags:
- "--config=unpretty"
ubuntu2204_clang:
name: With Clang
platform: ubuntu2204
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
ubuntu2204_clang_lld:
name: With Clang and LLD
platform: ubuntu2204
shell_commands:
- "sudo apt -y update && sudo apt -y install lld"
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
- "--linkopt=-fuse-ld=lld"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
ubuntu2204_rolling_clang:
name: Rolling Bazel Version With Clang
platform: ubuntu2204
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
soft_fail: yes
bazel: "rolling"
ubuntu1804:
name: "Min Bazel Version"
# If updating the minimum bazel version, please also update /docs/index.md
bazel: *minimum_bazel_version
platform: ubuntu1804
shell_commands: *minimum_bazel_shell_commands
build_targets: *default_linux_targets
test_targets: *default_linux_targets
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
ubuntu1804_with_aspects:
name: "Min Bazel Version With Aspects"
bazel: *minimum_bazel_version
platform: ubuntu1804
shell_commands: *minimum_bazel_shell_commands
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags: *aspects_flags
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
ubuntu2204_min_rust_version:
name: "Min Rust Version"
platform: ubuntu2204
shell_commands: *min_rust_version_shell_commands
build_targets: *single_rust_channel_min_version_targets
test_targets: *single_rust_channel_min_version_targets
ubuntu2204_min_rust_version_with_aspects:
name: "Min Rust Version With Aspects"
platform: ubuntu2204
shell_commands: *min_rust_version_shell_commands
build_flags: *aspects_flags
build_targets: *single_rust_channel_min_version_targets
test_flags: *aspects_flags
test_targets: *single_rust_channel_min_version_targets
ubuntu2204_stable_toolchain:
name: "Only Stable Toolchain"
platform: ubuntu2204
# Test rules while only registering a nightly toolchain
shell_commands:
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_RUST_VERSION")\nrust_register_toolchains(versions = [DEFAULT_RUST_VERSION],\n|' WORKSPACE.bazel
- sed -i 's|^rust\.toolchain(|rust.toolchain(versions = ['$(awk '$0 ~ /^DEFAULT_RUST_VERSION = / {print $3}' rust/private/common.bzl)'],\n|' MODULE.bazel
build_targets: *single_rust_channel_targets
test_targets: *single_rust_channel_targets
ubuntu2204_stable_with_aspects:
name: "Only Stable Toolchain With Aspects"
platform: ubuntu2204
# Test rules while only registering a nightly toolchain
shell_commands:
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_RUST_VERSION")\nrust_register_toolchains(versions = [DEFAULT_RUST_VERSION],\n|' WORKSPACE.bazel
- sed -i 's|^rust\.toolchain(|rust.toolchain(versions = ['$(awk '$0 ~ /^DEFAULT_RUST_VERSION = / {print $3}' rust/private/common.bzl)'],\n|' MODULE.bazel
build_flags: *aspects_flags
build_targets: *single_rust_channel_targets
test_flags: *aspects_flags
test_targets: *single_rust_channel_targets
ubuntu2204_nightly_toolchain:
name: "Only Nightly Toolchain"
platform: ubuntu2204
# Test rules while only registering a nightly toolchain
shell_commands:
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_NIGHTLY_ISO_DATE")\nrust_register_toolchains(versions = ["nightly/" + DEFAULT_NIGHTLY_ISO_DATE],\n|' WORKSPACE.bazel
- sed -i 's|^rust\.toolchain(|rust.toolchain(versions = ["nightly/'$(awk -F '"' '$0 ~ /^DEFAULT_NIGHTLY_ISO_DATE = / {print $2}' rust/private/common.bzl)'"],\n|' MODULE.bazel
build_flags: *nightly_flags
build_targets: *single_rust_channel_targets
test_flags: *nightly_flags
test_targets: *single_rust_channel_targets
ubuntu2204_nightly_with_aspects:
name: "Only Nightly Toolchain With Aspects"
platform: ubuntu2204
# Test rules while only registering a nightly toolchain
shell_commands:
- sed -i 's|^rust_register_toolchains(|load("//rust/private:common.bzl", "DEFAULT_NIGHTLY_ISO_DATE")\nrust_register_toolchains(versions = ["nightly/" + DEFAULT_NIGHTLY_ISO_DATE],\n|' WORKSPACE.bazel
- sed -i 's|^rust\.toolchain(|rust.toolchain(versions = ["nightly/'$(awk -F '"' '$0 ~ /^DEFAULT_NIGHTLY_ISO_DATE = / {print $2}' rust/private/common.bzl)'"],\n|' MODULE.bazel
build_flags: *nightly_aspects_flags
build_targets: *single_rust_channel_targets
test_flags: *nightly_aspects_flags
test_targets: *single_rust_channel_targets
ubuntu2204_rolling_with_aspects:
name: "Rolling Bazel Version With Aspects"
bazel: "rolling"
platform: ubuntu2204
build_flags: *aspects_flags
soft_fail: yes
build_targets: *default_linux_targets
test_targets: *default_linux_targets
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
linux_docs:
name: Docs
platform: ubuntu2204
working_directory: docs
build_targets:
- //...
run_targets:
- "//:publish_book"
clippy_failure:
name: Negative Clippy Tests
platform: ubuntu2204
run_targets:
- "//test/clippy:clippy_failure_tester"
rustfmt_failure:
name: Negative Rustfmt Tests
platform: ubuntu2204
run_targets:
- "//test/rustfmt:rustfmt_failure_tester"
ide_integration_tests_linux:
name: IDE VSCode Tests
platform: ubuntu2204
run_targets:
- "//tools/vscode:gen_launch_json"
- "//test/vscode:vscode_test"
- "//tools/rust_analyzer:gen_rust_project"
- "//tools/rust_analyzer:discover_bazel_rust_project"
- "//test/rust_analyzer:rust_analyzer_test"
ide_integration_tests_macos:
name: IDE VSCode Tests
platform: macos_arm64
run_targets:
- "//tools/vscode:gen_launch_json"
- "//test/vscode:vscode_test"
- "//tools/rust_analyzer:gen_rust_project"
- "//tools/rust_analyzer:discover_bazel_rust_project"
- "//test/rust_analyzer:rust_analyzer_test"
ide_integration_tests_windows:
name: IDE VSCode Tests
platform: windows
run_targets:
- "//tools/vscode:gen_launch_json"
- "//tools/rust_analyzer:gen_rust_project"
- "//tools/rust_analyzer:discover_bazel_rust_project"
# TODO: Enable rust-analyzer tests on windows.
# - "//test/rust_analyzer:rust_analyzer_test"
path_mapping_ubuntu2204:
name: Path Mapping Linux
platform: ubuntu2204
build_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
test_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
build_targets: *default_linux_targets
test_targets: *default_linux_targets
coverage_targets: *default_linux_targets
post_shell_commands: *coverage_validation_post_shell_commands
path_mapping_rbe_ubuntu2204:
name: Path Mapping RBE
platform: rbe_ubuntu2204
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
test_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
build_targets: *default_rbe_targets
test_targets: *default_rbe_targets
coverage_targets: *default_rbe_targets
coverage_flags: *rbe_coverage_flags
post_shell_commands: *coverage_validation_post_shell_commands
path_mapping_macos:
name: Path Mapping MacOS
platform: macos_arm64
build_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
test_flags:
- --config=clippy
- --config=rustfmt
- --experimental_output_paths=strip
build_targets: *default_macos_targets
test_targets: *default_macos_targets
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
# TODO: path_mapping requires sandboxing
# https://github.com/bazelbuild/bazel/issues/7480
#
# path_mapping_windows:
# name: Path Mapping Windows
# platform: windows
# build_flags:
# - --config=clippy
# - --config=rustfmt
# - --experimental_output_paths=strip
# test_flags:
# - --config=clippy
# - --config=rustfmt
# - --experimental_output_paths=strip
# build_targets: *default_windows_targets
# test_targets: *default_windows_targets
###########################################################################
# C R A T E U N I V E R S E I N T E G R A T I O N T E S T S
###########################################################################
# TODO: Add linux_arm64 tasks when BazelCI workers are available.
# --- alias_rule ---
cu_integ_alias_rule_ubuntu2204:
name: Crate Universe - alias_rule
platform: ubuntu2204
working_directory: crate_universe/tests/integration/alias_rule
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_alias_rule_macos:
name: Crate Universe - alias_rule
platform: macos_arm64
working_directory: crate_universe/tests/integration/alias_rule
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_aliases ---
cu_integ_cargo_aliases_ubuntu2204:
name: Crate Universe - cargo_aliases
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_aliases
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_cargo_aliases_macos:
name: Crate Universe - cargo_aliases
platform: macos_arm64
working_directory: crate_universe/tests/integration/cargo_aliases
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_bindeps (linux only, requires nightly) ---
cu_integ_cargo_bindeps_ubuntu2204:
name: Crate Universe - cargo_bindeps
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_bindeps
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_local ---
cu_integ_cargo_local_ubuntu2204:
name: Crate Universe - cargo_local
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_local
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_cargo_local_macos:
name: Crate Universe - cargo_local
platform: macos_arm64
working_directory: crate_universe/tests/integration/cargo_local
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_remote ---
cu_integ_cargo_remote_ubuntu2204:
name: Crate Universe - cargo_remote
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_remote
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_cargo_remote_macos:
name: Crate Universe - cargo_remote
platform: macos_arm64
working_directory: crate_universe/tests/integration/cargo_remote
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_workspace ---
cu_integ_cargo_workspace_ubuntu2204:
name: Crate Universe - cargo_workspace
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_workspace
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_cargo_workspace_macos:
name: Crate Universe - cargo_workspace
platform: macos_arm64
working_directory: crate_universe/tests/integration/cargo_workspace
build_targets:
- "//..."
test_targets:
- "//..."
# --- cargo_conditional_deps ---
cu_integ_cargo_conditional_deps_ubuntu2204:
name: Crate Universe - cargo_conditional_deps
platform: ubuntu2204
working_directory: crate_universe/tests/integration/cargo_conditional_deps
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_cargo_conditional_deps_macos:
name: Crate Universe - cargo_conditional_deps
platform: macos_arm64
working_directory: crate_universe/tests/integration/cargo_conditional_deps
build_targets:
- "//..."
test_targets:
- "//..."
# --- complicated_dependencies (linux + macos only, boringssl issues on Windows/RBE) ---
cu_integ_complicated_dependencies_ubuntu2204:
name: Crate Universe - complicated_dependencies
platform: ubuntu2204
working_directory: crate_universe/tests/integration/complicated_dependencies
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_complicated_dependencies_macos:
name: Crate Universe - complicated_dependencies
platform: macos_arm64
working_directory: crate_universe/tests/integration/complicated_dependencies
build_targets:
- "//..."
test_targets:
- "//..."
# --- multi_package (linux + macos only, curl-sys Windows issues) ---
cu_integ_multi_package_ubuntu2204:
name: Crate Universe - multi_package
platform: ubuntu2204
working_directory: crate_universe/tests/integration/multi_package
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_multi_package_macos:
name: Crate Universe - multi_package
platform: macos_arm64
working_directory: crate_universe/tests/integration/multi_package
build_targets:
- "//..."
test_targets:
- "//..."
# --- no_cargo_manifests ---
cu_integ_no_cargo_manifests_ubuntu2204:
name: Crate Universe - no_cargo_manifests
platform: ubuntu2204
working_directory: crate_universe/tests/integration/no_cargo_manifests
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_no_cargo_manifests_macos:
name: Crate Universe - no_cargo_manifests
platform: macos_arm64
working_directory: crate_universe/tests/integration/no_cargo_manifests
build_targets:
- "//..."
test_targets:
- "//..."
# --- override_target ---
cu_integ_override_target_ubuntu2204:
name: Crate Universe - override_target
platform: ubuntu2204
working_directory: crate_universe/tests/integration/override_target
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_override_target_macos:
name: Crate Universe - override_target
platform: macos_arm64
working_directory: crate_universe/tests/integration/override_target
build_targets:
- "//..."
test_targets:
- "//..."
# --- remove_internal_deps ---
cu_integ_remove_internal_deps_ubuntu2204:
name: Crate Universe - remove_internal_deps
platform: ubuntu2204
working_directory: crate_universe/tests/integration/remove_internal_deps
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_remove_internal_deps_macos:
name: Crate Universe - remove_internal_deps
platform: macos_arm64
working_directory: crate_universe/tests/integration/remove_internal_deps
build_targets:
- "//..."
test_targets:
- "//..."
# --- using_cxx (linux + macos only, C++ codegen platform issues) ---
cu_integ_using_cxx_ubuntu2204:
name: Crate Universe - using_cxx
platform: ubuntu2204
working_directory: crate_universe/tests/integration/using_cxx
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_using_cxx_macos:
name: Crate Universe - using_cxx
platform: macos_arm64
working_directory: crate_universe/tests/integration/using_cxx
build_targets:
- "//..."
test_targets:
- "//..."
# --- vendor (consolidated) ---
cu_integ_vendor_ubuntu2204:
name: Crate Universe - vendor
platform: ubuntu2204
working_directory: crate_universe/tests/integration/vendor
run_targets:
- "//3rdparty:crates_vendor"
- "//local_manifests:crates_vendor"
- "//local_pkgs:crates_vendor"
- "//remote_manifests:crates_vendor"
- "//remote_pkgs:crates_vendor"
- "//local_patching:crates_vendor"
build_targets:
- "//..."
test_targets:
- "//..."
cu_integ_vendor_macos:
name: Crate Universe - vendor
platform: macos_arm64
working_directory: crate_universe/tests/integration/vendor
run_targets:
- "//3rdparty:crates_vendor"
- "//local_manifests:crates_vendor"
- "//local_pkgs:crates_vendor"
- "//remote_manifests:crates_vendor"
- "//remote_pkgs:crates_vendor"
- "//local_patching:crates_vendor"
build_targets:
- "//..."
test_targets:
- "//..."
# --- local_path (linux only, vendor script tests) ---
cu_integ_local_path_external:
name: Crate Universe - local_path (external)
platform: ubuntu2204
working_directory: crate_universe/tests/integration/local_path
run_targets:
- "//:vendor_edit_test_out_of_tree"
cu_integ_local_path_in_tree:
name: Crate Universe - local_path (in tree)
platform: ubuntu2204
working_directory: crate_universe/tests/integration/local_path
run_targets:
- "//:vendor_edit_test_in_tree"
example_bindgen_toolchain:
name: Example custom bindgen toolchain registration
platform: ubuntu2204
working_directory: examples/bindgen_toolchain
build_targets:
- "//..."
test_targets:
- "//..."
cc_common_link_ubuntu2204:
name: Build via cc_common.link
platform: ubuntu2204
working_directory: test/integration/cc_common_link
build_targets:
- "//..."
test_targets:
- "//..."
cc_common_link_macos:
name: Build via cc_common.link
platform: macos_arm64
working_directory: test/integration/cc_common_link
build_targets:
- "//..."
test_targets:
- "//..."
cc_common_link_with_global_alloc_ubuntu2204:
name: Build via cc_common.link using a global allocator
platform: ubuntu2204
working_directory: test/integration/cc_common_link_with_global_alloc
build_targets:
- "//..."
test_targets:
- "//..."
cc_common_link_with_global_alloc_macos:
name: Build via cc_common.link using a global allocator
platform: macos_arm64
working_directory: test/integration/cc_common_link_with_global_alloc
build_targets:
- "//..."
test_targets:
- "//..."
cc_common_link_no_std_ubuntu2204:
name: Build with no_std + alloc using cc_common.link infrastructure for linking
platform: ubuntu2204
working_directory: test/integration/no_std
build_targets:
- "//..."
test_targets:
- "//..."
build_flags:
- "--config=no_std_alloc_using_cc_common_link"
test_flags:
- "--config=no_std_alloc_using_cc_common_link"
no_std_ubuntu2204:
name: Build with no_std + alloc
platform: ubuntu2204
working_directory: test/integration/no_std
build_targets:
- "//..."
test_targets:
- "//..."
build_flags:
- "--config=no_std_alloc"
test_flags:
- "--config=no_std_alloc"
unstable_rust_features_ubuntu2204:
name: Build with unstable_rust_features
platform: ubuntu2204
working_directory: test/integration/unstable_rust_features
build_targets:
- "//..."
repo_mapping_runfiles:
name: repo mapping test
platform: ubuntu2204
working_directory: test/integration/bzlmod_repo_mapping/module_a
test_targets:
- "//..."
aliased_toolchains:
name: aliased toolchains test
platform: ubuntu2204
working_directory: test/integration/aliased_toolchains
build_targets:
- "@rust_toolchains//:all"
- "//..."
ios_examples:
name: iOS Examples
platform: macos_arm64
working_directory: examples/ios
build_targets:
- "//..."
ios_build:
name: iOS build script cross compile test
platform: macos_arm64
working_directory: examples/ios_build
test_flags:
- "--cpu=ios_x86_64"
- "--apple_platform_type=ios"
test_targets:
- "//..."
example_all_crate_deps:
name: Cargo dependencies
platform: ubuntu2204
working_directory: examples/all_crate_deps
build_targets:
- "//..."
example_all_deps_vendor:
name: Vendored dependencies
platform: ubuntu2204
working_directory: examples/all_deps_vendor
run_targets:
- "//basic/3rdparty:crates_vendor"
build_targets:
- "//..."
example_compile_opt:
name: Compiler optimization
platform: ubuntu2204
working_directory: examples/compile_opt
build_targets:
- "//..."
# TODO: This test requires musl or for rustc to provide necessary gnu libraries for
# linking gnu libraries.
# https://github.com/bazelbuild/rules_rust/issues/390
# cross_compile_linux:
# name: Cross compile example on Linux without cc_toolchain
# platform: ubuntu2204
# working_directory: examples/cross_compile
# shell_commands:
# - sed -i 's/_FORCE_DISABLE_CC_TOOLCHAIN = False/_FORCE_DISABLE_CC_TOOLCHAIN = True/' ../../rust/private/utils.bzl
# test_flags:
# - "--keep_going"
# test_targets:
# - "//..."
cross_compile_macos:
name: Cross compile example on MacOS without cc_toolchain
platform: macos_arm64
working_directory: examples/cross_compile
shell_commands:
- sed -i '' 's/_FORCE_DISABLE_CC_TOOLCHAIN = False/_FORCE_DISABLE_CC_TOOLCHAIN = True/' ../../rust/private/utils.bzl
test_flags:
- "--keep_going"
test_targets:
- "//..."
cross_compile_windows:
name: Cross compile example on Windows without cc_toolchain
platform: windows
working_directory: examples/cross_compile
batch_commands:
- powershell -Command "(Get-Content rust/private/utils.bzl) -replace '_FORCE_DISABLE_CC_TOOLCHAIN = False', '_FORCE_DISABLE_CC_TOOLCHAIN = True' | Set-Content ../../rust/private/utils.bzl"
test_flags:
- "--keep_going"
test_targets:
- "//..."
cross_compile_musl_macos_to_linux:
name: Cross compile example Musl from macOS to Linux
platform: macos_arm64
working_directory: examples/cross_compile_musl
test_targets:
- "//..."
cross_compile_musl_linux_to_linux:
name: Cross compile example Musl from Linux to Linux
platform: ubuntu2204
working_directory: examples/cross_compile_musl
build_targets:
- "//..."
test_targets:
- "//..."
cross_compile_nix:
name: Cross compile example with Nix
platform: ubuntu2204
working_directory: examples/cross_compile_nix
setup:
- curl -L https://nixos.org/nix/install | bash
- sudo cp ~/.nix-profile/bin/nix* /usr/local/bin/
build_targets:
# Root `build_test` target is called directly to catch missing platforms
# that would otherwise be quietly skipped due to `target_compatible_with`.
- "//:nix_cross_compiling"
test_targets:
- "//..."
cross_compile_llvm_linux:
name: Cross compile example with LLVM on Linux
platform: ubuntu2204
working_directory: examples/cross_compile_llvm
build_targets:
- "//:all"
test_targets:
- "//..."
cross_compile_llvm_macos:
name: Cross compile example with LLVM on MacOS
platform: macos_arm64
working_directory: examples/cross_compile_llvm
build_targets:
- "//:all"
test_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/2075
# cross_compile_zig:
# name: Cross compile example with Zig
# platform: ubuntu2204
# working_directory: examples/cross_compile_zig
# build_targets:
# - "//..."
example_ffi_linux:
platform: ubuntu2204
working_directory: examples/ffi
name: FFI Example
build_targets:
- "//..."
test_targets:
- "//..."
# TODO: https://github.com/bazelbuild/bazel/issues/9987
# example_ffi_linux_rbe:
# platform: rbe_ubuntu2204
# working_directory: examples/ffi
# name: FFI Example
# build_targets:
# - "//..."
# test_targets:
# - "//..."
example_ffi_macos:
platform: macos_arm64
working_directory: examples/ffi
name: FFI Example
build_targets:
- "//..."
test_targets:
- "//..."
example_ffi_windows:
platform: windows
working_directory: examples/ffi
name: FFI Example
build_targets:
- "//..."
test_targets:
- "//..."
example_runfiles:
name: Runfiles example
platform: ubuntu2204
working_directory: examples/runfiles
build_targets:
- "//..."
test_targets:
- "//..."
run_targets:
- "//pkg_a:pkg_a_binary"
- "//pkg_b:pkg_b_binary"
example_hello_world_linux:
name: Hello World example
platform: ubuntu2204
working_directory: examples/hello_world
test_flags:
- "--lockfile_mode=error"
run_targets:
- "//third-party-in-workspace:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
example_hello_world_linux_minimum_bazel:
name: Hello World example minimal bazel
bazel: *minimum_bazel_version
platform: ubuntu2204
working_directory: examples/hello_world
shell_commands:
- "rm MODULE.bazel.lock"
run_targets:
- "//third-party-in-workspace:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
example_hello_world_macos:
name: Hello World example
platform: macos_arm64
working_directory: examples/hello_world
test_flags:
- "--lockfile_mode=error"
run_targets:
- "//third-party-in-workspace:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
example_hello_world_windows:
name: Hello World example
platform: windows
working_directory: examples/hello_world
test_flags:
- "--lockfile_mode=error"
run_targets:
- "//third-party-in-workspace:vendor"
build_targets:
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
example_sys_linux:
platform: ubuntu2204
working_directory: examples/sys
name: Sys Example
build_targets:
- "//..."
test_targets:
- "//..."
example_sys_linux_rbe:
platform: ubuntu2204
working_directory: examples/sys
name: Sys Example
build_targets:
- "//..."
test_targets:
- "//..."
example_sys_macos:
platform: macos_arm64
working_directory: examples/sys
name: Sys Example
build_targets:
- "//..."
test_targets:
- "//..."
example_sys_windows:
platform: windows
working_directory: examples/sys
name: Sys Example
build_targets:
- "//..."
test_targets:
- "//..."
example_no_cargo:
name: Cargo-less example
platform: ubuntu2204
working_directory: examples/hello_world_no_cargo
build_targets:
- "//..."
example_override_targets:
name: Override Targets
platform: ubuntu2204
working_directory: examples/override_target
build_targets:
- "//..."
test_targets:
- "//..."
example_proto:
name: Proto and Prost
platform: ubuntu2204
working_directory: examples/proto
build_targets:
- "//..."
compile_one_dependency:
name: --compile_one_dependency flag
platform: ubuntu2204
build_flags:
- "--compile_one_dependency"
build_targets:
- "tools/rust_analyzer/bin/gen_rust_project.rs"
extensions_bindgen_linux:
platform: ubuntu2204
name: Extensions Bindgen
working_directory: extensions/bindgen
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_bindgen_linux_rbe:
platform: rbe_ubuntu2204
name: Extensions Bindgen
working_directory: extensions/bindgen
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_bindgen_macos:
platform: macos_arm64
name: Extensions Bindgen
working_directory: extensions/bindgen
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
# # TODO: https://github.com/bazelbuild/rules_rust/issues/2009
# # The bindgen rules are currently broken on windows
# extensions_bindgen_windows:
# platform: windows
# name: Extensions Bindgen
# working_directory: extensions/bindgen
# build_flags: *aspects_flags
# test_flags: *aspects_flags
# build_targets:
# - "--"
# - "//..."
# test_targets:
# - "--"
# - "//..."
extensions_mdbook_linux:
platform: ubuntu2204
name: Extensions MdBook
working_directory: extensions/mdbook
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_mdbook_linux_rbe:
platform: rbe_ubuntu2204
name: Extensions MdBook
working_directory: extensions/mdbook
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_mdbook_macos:
platform: macos_arm64
name: Extensions MdBook
working_directory: extensions/mdbook
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_mdbook_windows:
platform: windows
name: Extensions MdBook
working_directory: extensions/mdbook
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_prost_linux:
platform: ubuntu2204
name: Extensions Prost
working_directory: extensions/prost
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_prost_linux_rbe:
platform: rbe_ubuntu2204
name: Extensions Prost
working_directory: extensions/prost
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_prost_macos:
platform: macos_arm64
name: Extensions Prost
working_directory: extensions/prost
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_prost_windows:
platform: windows
name: Extensions Prost
working_directory: extensions/prost
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_pyo3_linux:
platform: ubuntu2204
name: Extensions PyO3
working_directory: extensions/pyo3
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_pyo3_linux_rbe:
platform: rbe_ubuntu2204
name: Extensions PyO3
working_directory: extensions/pyo3
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--config=no_mypy"
- "--config=no_black"
- "--config=no_pylint"
- "--config=no_isort"
test_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--config=no_mypy"
- "--config=no_black"
- "--config=no_pylint"
- "--config=no_isort"
build_targets:
- "//..."
test_targets:
- "//..."
extensions_pyo3_macos:
platform: macos_arm64
name: Extensions PyO3
working_directory: extensions/pyo3
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_pyo3_windows:
platform: windows
name: Extensions PyO3
working_directory: extensions/pyo3
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_wasm_bindgen_linux:
platform: ubuntu2204
name: Extensions wasm-bindgen
working_directory: extensions/wasm_bindgen
shell_commands:
- "bash ./test/bazelci_unix_setup.sh"
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."
extensions_wasm_bindgen_linux_rbe:
platform: rbe_ubuntu2204
name: Extensions wasm-bindgen
working_directory: extensions/wasm_bindgen
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/3039
# test_targets:
# - "//..."
extensions_wasm_bindgen_macos:
platform: macos_arm64
name: Extensions wasm-bindgen
working_directory: extensions/wasm_bindgen
shell_commands:
- "bash ./test/bazelci_unix_setup.sh"
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/3039
# test_targets:
# - "//..."
extensions_wasm_bindgen_windows:
platform: windows
name: Extensions wasm-bindgen
working_directory: extensions/wasm_bindgen
build_flags: *aspects_flags
test_flags: *aspects_flags
build_targets:
- "//..."
test_targets:
- "//..."