rules_rust/.bazelci/presubmit.yml

882 lines
31 KiB
YAML

---
minimum_bazel_version: &minimum_bazel_version "7.3.1"
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.72.1"],\n|' WORKSPACE.bazel
nightly_flags: &nightly_flags
- "--//rust/toolchain/channel=nightly"
nightly_aspects_flags: &nightly_aspects_flags
- "--//rust/toolchain/channel=nightly"
- "--config=rustfmt"
- "--config=clippy"
bzlmod_flags: &bzlmod_flags
- "--lockfile_mode=error"
bzlmod_plus_repo_names_flags: &bzlmod_plus_repo_names_flags
# `--lockfile_mode=error` is omitted because the repo names leak into the lock file.
- "--incompatible_use_plus_in_repo_names"
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/..."
default_linux_targets: &default_linux_targets
- "--"
- "//..."
default_macos_targets: &default_macos_targets
- "--"
- "//..."
default_windows_targets: &default_windows_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
- "-//test/proto/..."
- "-//test/unit/pipelined_compilation/..."
default_windows_no_runfiles_targets: &default_windows_no_runfiles_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/1156
- "-//crate_universe/..."
- "-//test/chained_direct_deps:mod3_doc_test"
- "-//test/out_dir_in_tests:demo_lib_doc_test"
- "-//test/proto/..."
- "-//test/rustc_env_files:output_test"
- "-//test/test_env_launcher:test"
- "-//test/test_env:test_manifest_dir"
- "-//test/test_env:test_run"
- "-//test/unit/pipelined_compilation/..."
- "-//test/unit/rustdoc/..."
- "-//tools/runfiles/..."
crate_universe_vendor_example_targets: &crate_universe_vendor_example_targets
- "//vendor_external:crates_vendor"
- "//vendor_local_manifests:crates_vendor"
- "//vendor_local_pkgs:crates_vendor"
- "//vendor_remote_manifests:crates_vendor"
- "//vendor_remote_pkgs:crates_vendor"
crate_universe_unnamed_vendor_example_targets: &crate_universe_unnamed_vendor_example_targets
- "//vendor_remote_manifests:crates_vendor"
- "//vendor_remote_pkgs:crates_vendor"
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 \
; }
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
tasks:
ubuntu2004:
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_ubuntu2004:
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_linux_targets
test_targets: *default_linux_targets
macos:
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_no_runfiles:
name: No Runfiles
platform: windows
build_flags:
- "--noenable_runfiles"
test_flags:
- "--noenable_runfiles"
build_targets: *default_windows_no_runfiles_targets
test_targets: *default_windows_no_runfiles_targets
ubuntu2004_split_coverage_postprocessing:
name: Split Coverage Postprocessing
platform: ubuntu2004
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
shell_commands: *split_coverage_postprocessing_shell_commands
coverage_targets: *default_macos_targets
post_shell_commands: *coverage_validation_post_shell_commands
ubuntu2004_opt:
name: Opt Mode
platform: ubuntu2004
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
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
ubuntu2004_with_aspects:
name: With Aspects
platform: ubuntu2004
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_ubuntu2004_with_aspects:
name: With Aspects
platform: rbe_ubuntu2004
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_linux_targets
test_targets: *default_linux_targets
rbe_ubuntu2004_rolling_with_aspects:
name: RBE Rolling Bazel Version With Aspects
platform: rbe_ubuntu2004
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_linux_targets
test_targets: *default_linux_targets
build_flags: *aspects_flags
soft_fail: yes
bazel: "rolling"
macos_with_aspects:
name: With Aspects
platform: macos
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
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: No Runfiles With Aspects
platform: windows
build_flags:
- "--noenable_runfiles"
- "--config=rustfmt"
- "--config=clippy"
test_flags:
- "--noenable_runfiles"
- "--config=rustfmt"
- "--config=clippy"
build_targets: *default_windows_no_runfiles_targets
test_targets: *default_windows_no_runfiles_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"
ubuntu2004_unpretty:
name: Unpretty
platform: ubuntu2004
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags:
- "--config=unpretty"
ubuntu2004_bzlmod_only:
name: With bzlmod
platform: ubuntu2004
# See https://bazel.build/external/migration#migration-process
# When WORKSPACE.bzlmod is provided, the workspace file is ignored.
shell_commands:
- "touch WORKSPACE.bzlmod"
build_flags:
- "--enable_bzlmod"
build_targets:
- "//bindgen/3rdparty:bindgen"
- "//crate_universe:cargo_bazel_bin"
- "//proto/prost/private:prost_runtime"
- "//tools/runfiles"
- "//util/import"
- "//wasm_bindgen/3rdparty:wasm_bindgen"
ubuntu2004_clang:
name: With Clang
platform: ubuntu2004
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
ubuntu2004_clang_lld:
name: With Clang and LLD
platform: ubuntu2004
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
ubuntu2004_rolling_clang:
name: Rolling Bazel Version With Clang
platform: ubuntu2004
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
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
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
ubuntu2004_min_rust_version:
name: "Min Rust Version"
platform: ubuntu2004
shell_commands: *min_rust_version_shell_commands
build_targets: *single_rust_channel_targets
test_targets: *single_rust_channel_targets
ubuntu2004_min_rust_version_with_aspects:
name: "Min Rust Version With Aspects"
platform: ubuntu2004
shell_commands: *min_rust_version_shell_commands
build_flags: *aspects_flags
build_targets: *single_rust_channel_targets
test_flags: *aspects_flags
test_targets: *single_rust_channel_targets
ubuntu2004_stable_toolchain:
name: "Only Stable Toolchain"
platform: ubuntu2004
# 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
build_targets: *single_rust_channel_targets
test_targets: *single_rust_channel_targets
ubuntu2004_stable_with_aspects:
name: "Only Stable Toolchain With Aspects"
platform: ubuntu2004
# 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
build_flags: *aspects_flags
build_targets: *single_rust_channel_targets
test_flags: *aspects_flags
test_targets: *single_rust_channel_targets
ubuntu2004_nightly_toolchain:
name: "Only Nightly Toolchain"
platform: ubuntu2004
# 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
build_flags: *nightly_flags
build_targets: *single_rust_channel_targets
test_flags: *nightly_flags
test_targets: *single_rust_channel_targets
ubuntu2004_nightly_with_aspects:
name: "Only Nightly Toolchain With Aspects"
platform: ubuntu2004
# 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
build_flags: *nightly_aspects_flags
build_targets: *single_rust_channel_targets
test_flags: *nightly_aspects_flags
test_targets: *single_rust_channel_targets
ubuntu2004_rolling_with_aspects:
name: "Rolling Bazel Version With Aspects"
bazel: "rolling"
platform: ubuntu2004
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: ubuntu2004
working_directory: docs
build_targets:
- //...
run_targets:
- "//:test_docs"
clippy_failure:
name: Negative Clippy Tests
platform: ubuntu2004
run_targets:
- "//test/clippy:clippy_failure_test"
rustfmt_failure:
name: Negative Rustfmt Tests
platform: ubuntu2004
run_targets:
- "//test/rustfmt:rustfmt_integration_test_suite.test_runner"
rust_analyzer_tests:
name: Rust-Analyzer Tests
platform: ubuntu2004
run_targets:
- "//test/rust_analyzer:rust_analyzer_test"
rust_analyzer_integration_test:
name: Rust-Analyzer Integration Test
platform: ubuntu2004
run_targets:
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
examples_rust_analyzer_integration_test:
name: Rust-Analyzer Integration Test
platform: ubuntu2004
working_directory: examples
run_targets:
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
ubuntu2004_examples:
name: Examples
platform: ubuntu2004
working_directory: examples
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
ubuntu2004_examples_clang:
name: Examples with Clang
platform: ubuntu2004
working_directory: examples
build_flags:
- "--repo_env=CC=clang"
- "--config=rustfmt"
- "--config=clippy"
build_targets:
- "//..."
test_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/2554
# ubuntu2004_examples_clang_lld:
# name: Examples with Clang and LLD
# platform: ubuntu2004
# shell_commands:
# - "sudo apt -y update && sudo apt -y install lld"
# working_directory: examples
# build_flags:
# - "--repo_env=CC=clang"
# - "--linkopt=-fuse-ld=lld"
# - "--config=rustfmt"
# - "--config=clippy"
# build_targets:
# - "//..."
# test_targets:
# - "//..."
ubuntu2004_examples_rolling:
name: "Examples with Rolling Bazel Version"
platform: ubuntu2004
working_directory: examples
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
soft_fail: yes
rbe_ubuntu2004_examples:
name: Examples
platform: rbe_ubuntu2004
working_directory: examples
rbe_examples_targets: &rbe_examples_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
# TODO: This requires an updated `rules_foreign_cc`
- "-//sys/..."
# See https://github.com/bazelbuild/bazel/issues/9987
- "-//ffi/rust_calling_c:matrix_dylib_test"
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: *rbe_examples_targets
test_targets: *rbe_examples_targets
build_flags: *aspects_flags
macos_examples:
name: Examples
platform: macos
working_directory: examples
build_targets:
- "//..."
test_targets:
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
build_flags: *aspects_flags
windows_examples:
name: Examples
platform: windows
working_directory: examples
build_flags:
- "--config=rustfmt"
- "--config=clippy"
windows_targets: &windows_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
# The proto rules do not work on windows
- "-//proto/..."
# The bindgen rules are currently broken on windows
# https://github.com/bazelbuild/rules_rust/issues/2009
- "-//bindgen/..."
build_targets: *windows_targets
test_targets: *windows_targets
crate_universe_examples_ubuntu2004:
name: Crate Universe Examples
platform: ubuntu2004
working_directory: examples/crate_universe
run_targets: *crate_universe_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
crate_universe_unnamed_examples_ubuntu2004:
name: Crate Universe Unnamed Examples
platform: ubuntu2004
working_directory: examples/crate_universe_unnamed
run_targets: *crate_universe_unnamed_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
crate_universe_rbe_ubuntu2004:
name: Crate Universe Examples
platform: rbe_ubuntu2004
working_directory: examples/crate_universe
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
run_targets: *crate_universe_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
crate_universe_unnamed_rbe_ubuntu2004:
name: Crate Universe Unnamed Examples
platform: rbe_ubuntu2004
working_directory: examples/crate_universe_unnamed
shell_commands:
- sed -i 's/^# load("@bazel_ci_rules/load("@bazel_ci_rules/' WORKSPACE.bazel
- sed -i 's/^# rbe_preconfig/rbe_preconfig/' WORKSPACE.bazel
run_targets: *crate_universe_unnamed_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
crate_universe_examples_macos:
name: Crate Universe Examples
platform: macos
working_directory: examples/crate_universe
run_targets: *crate_universe_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
crate_universe_unnamed_examples_macos:
name: Crate Universe Unnamed Examples
platform: macos
working_directory: examples/crate_universe_unnamed
run_targets: *crate_universe_unnamed_vendor_example_targets
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
# See https://github.com/bazelbuild/rules_rust/issues/2186 about re-enabling these.
# crate_universe_examples_windows:
# name: Crate Universe Examples
# platform: windows
# working_directory: examples/crate_universe
# run_targets: *crate_universe_vendor_example_targets
# build_flags: *aspects_flags
# build_targets:
# - "//..."
# test_targets:
# - "//..."
# crate_universe_unnamed_examples_windows:
# name: Crate Universe Unnamed Examples
# platform: windows
# working_directory: examples/crate_universe_unnamed
# run_targets: *crate_universe_unnamed_vendor_example_targets
# build_flags: *aspects_flags
# build_targets:
# - "//..."
# test_targets:
# - "//..."
cc_common_link_ubuntu2004:
name: Build via cc_common.link
platform: ubuntu2004
working_directory: test/cc_common_link
build_targets:
- "--"
- "//..."
# The with_global_alloc directory is a repository on its own tested in the 'Build via cc_common.link using a global allocator' task.
- "-//with_global_alloc/..."
test_targets:
- "--"
- "//..."
# The with_global_alloc directory is a repository on its own tested in the 'Build via cc_common.link using a global allocator' task.
- "-//with_global_alloc/..."
build_flags:
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
test_flags:
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
cc_common_link_with_global_alloc_ubuntu2004:
name: Build via cc_common.link using a global allocator
platform: ubuntu2004
working_directory: test/cc_common_link/with_global_alloc
build_targets:
- "//..."
test_targets:
- "//..."
build_flags:
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
- "--@rules_rust//rust/settings:experimental_use_global_allocator=True"
test_flags:
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
- "--@rules_rust//rust/settings:experimental_use_global_allocator=True"
cc_common_link_no_std_ubuntu2004:
name: Build with no_std + alloc using cc_common.link infrastructure for linking
platform: ubuntu2004
working_directory: test/no_std
build_targets:
- "//..."
test_targets:
- "//..."
build_flags:
- "--@rules_rust//rust/toolchain/channel=nightly"
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
- "--@rules_rust//rust/settings:experimental_use_global_allocator=True"
- "--@rules_rust//:no_std=alloc"
test_flags:
- "--@rules_rust//rust/toolchain/channel=nightly"
- "--@rules_rust//rust/settings:experimental_use_cc_common_link=True"
- "--@rules_rust//rust/settings:experimental_use_global_allocator=True"
- "--@rules_rust//:no_std=alloc"
no_std_ubuntu2004:
name: Build with no_std + alloc
platform: ubuntu2004
working_directory: test/no_std
build_targets:
- "//..."
test_targets:
- "//..."
build_flags:
- "--@rules_rust//rust/toolchain/channel=nightly"
- "--@rules_rust//:no_std=alloc"
test_flags:
- "--@rules_rust//rust/toolchain/channel=nightly"
- "--@rules_rust//:no_std=alloc"
bzlmod_repo_mapping_runfiles:
name: bzlmod repo mapping test
platform: ubuntu2004
working_directory: test/bzlmod_repo_mapping/module_a
test_targets:
- "//..."
android_examples_ubuntu2004:
name: Android Examples
platform: ubuntu2004
working_directory: examples/android
build_flags:
- "--incompatible_enable_android_toolchain_resolution"
- "--android_platforms=//:arm64-v8a"
build_targets:
- "//:android_app"
environment:
# This ndk version matches with rules_android_ndk repo's CI
# https://github.com/bazelbuild/rules_android_ndk/blob/877c68ef34c9f3353028bf490d269230c1990483/.bazelci/presubmit.yml#L37
# The ndk is installed by this script
# https://github.com/bazelbuild/continuous-integration/blob/ba56013373821feadd9f2eaa6b81eb19528795f0/macos/mac-android.sh
ANDROID_NDK_HOME: /opt/android-ndk-r25b
android_examples_macos:
name: Android Examples
platform: macos
working_directory: examples/android
build_flags:
- "--incompatible_enable_android_toolchain_resolution"
- "--android_platforms=//:arm64-v8a"
build_targets:
- "//:android_app"
environment:
# This ndk version matches with rules_android_ndk repo's CI
# https://github.com/bazelbuild/rules_android_ndk/blob/877c68ef34c9f3353028bf490d269230c1990483/.bazelci/presubmit.yml#L42
# The ndk is installed by this script
# https://github.com/bazelbuild/continuous-integration/blob/ba56013373821feadd9f2eaa6b81eb19528795f0/macos/mac-android.sh
ANDROID_NDK_HOME: /Users/buildkite/android-ndk-r25b
ios_examples:
name: iOS Examples
platform: macos
working_directory: examples/ios
build_targets:
- "//..."
ios_build:
name: iOS build script cross compile test
platform: macos
working_directory: examples/ios_build
test_flags:
- "--cpu=ios_x86_64"
- "--apple_platform_type=ios"
test_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/2075
# zig_cross_compiling:
# name: Zig cross compiling test
# platform: ubuntu2004
# working_directory: examples/zig_cross_compiling
# build_targets:
# - "//..."
musl_cross_compiling_macos_to_linux:
name: Musl cross compiling test from macOS to Linux
platform: macos
working_directory: examples/musl_cross_compiling
build_targets:
- "//..."
test_targets:
- "//..."
musl_cross_compiling_linux_to_linux:
name: Musl cross compiling test from Linux to Linux
platform: ubuntu2204
working_directory: examples/musl_cross_compiling
build_targets:
- "//..."
test_targets:
- "//..."
nix_cross_compiling:
name: Nix cross compiling test
platform: ubuntu2204
working_directory: examples/nix_cross_compiling
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:
- "//..."
bzlmod_all_crate_deps:
name: Cargo dependencies with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/all_crate_deps
build_targets:
- "//..."
bzlmod_all_deps_vendor:
name: Vendored dependencies with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/all_deps_vendor
run_targets:
- "//basic/3rdparty:crates_vendor"
build_targets:
- "//..."
bzlmod_compile_opt:
name: Compiler optimization with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/compile_opt
build_targets:
- "//..."
bzlmod_cross_compile:
name: Cross compilation with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/cross_compile
build_targets:
- "//:all"
test_targets:
- "//..."
macos_bzlmod_cross_compile:
name: Cross compilation with bzlmod on macOS
platform: macos
working_directory: examples/bzlmod/cross_compile
build_targets:
- "//:all"
test_targets:
- "//..."
bzlmod_ffi:
name: FFI with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/ffi
build_targets:
- "//..."
ubuntu2004_bzlmod_bcr:
name: bzlmod BCR presubmit
platform: ubuntu2004
working_directory: examples/bzlmod/hello_world
test_flags: *bzlmod_flags
run_targets:
- "//third-party:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
ubuntu2004_bzlmod_minimum_bazel_bcr:
name: bzlmod BCR presubmit minimal bazel
bazel: *minimum_bazel_version
platform: ubuntu2004
working_directory: examples/bzlmod/hello_world
shell_commands:
- "rm MODULE.bazel.lock"
run_targets:
- "//third-party:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
macos_bzlmod_bcr:
name: bzlmod BCR presubmit
platform: macos
working_directory: examples/bzlmod/hello_world
test_flags: *bzlmod_flags
run_targets:
- "//third-party:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
# TODO: https://github.com/bazelbuild/rules_rust/issues/2878
# windows_bzlmod_bcr:
# name: bzlmod BCR presubmit
# platform: windows
# working_directory: examples/bzlmod/hello_world
# test_flags: *bzlmod_flags
# run_targets:
# - "//third-party:vendor"
# build_targets:
# - "@rules_rust//tools/rust_analyzer:gen_rust_project"
# test_targets:
# - "//..."
ubuntu2004_bzlmod_plus_repo_names_bcr:
name: bzlmod BCR presubmit w/ incompatible flags
# A newer version than is specified in the .bazel_version file is needed for
# --incompatible_use_plus_in_repo_names'
bazel: *minimum_bazel_version
platform: ubuntu2004
working_directory: examples/bzlmod/hello_world
test_flags: *bzlmod_plus_repo_names_flags
run_targets:
- "//third-party:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
macos_bzlmod_plus_repo_names_bcr:
name: bzlmod BCR presubmit w/ incompatible flags
# A newer version than is specified in the .bazel_version file is needed for
# --incompatible_use_plus_in_repo_names'
bazel: *minimum_bazel_version
platform: macos
working_directory: examples/bzlmod/hello_world
test_flags: *bzlmod_plus_repo_names_flags
run_targets:
- "//third-party:vendor"
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
windows_bzlmod_plus_repo_names_bcr:
name: bzlmod BCR presubmit w/ incompatible flags
# A newer version than is specified in the .bazel_version file is needed for
# --incompatible_use_plus_in_repo_names'
bazel: *minimum_bazel_version
platform: windows
working_directory: examples/bzlmod/hello_world
test_flags: *bzlmod_plus_repo_names_flags
run_targets:
- "//third-party:vendor"
build_targets:
- "@rules_rust//tools/rust_analyzer:gen_rust_project"
test_targets:
- "//..."
bzlmod_no_cargo:
name: Cargo-less bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/hello_world_no_cargo
build_targets:
- "//..."
bzlmod_override_targets:
name: Override Targets bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/override_target
build_targets:
- "//..."
test_targets:
- "//..."
bzlmod_proto:
name: Proto and Prost with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/proto
build_targets:
- "//..."
bzlmod_protoc:
name: Proto and Prost with prebuilt protoc with bzlmod
platform: ubuntu2004
working_directory: examples/bzlmod/proto_with_toolchain
build_targets:
- "//..."
compile_one_dependency:
name: --compile_one_dependency flag
platform: ubuntu2004
build_flags:
- "--compile_one_dependency"
build_targets:
- "tools/rust_analyzer/main.rs"
buildifier:
version: latest
warnings: "all"