Skip to content

Updated CI structure to increase coverage #865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Aug 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
227 changes: 141 additions & 86 deletions .bazelci/presubmit.yml
Original file line number Diff line number Diff line change
@@ -1,125 +1,186 @@
---
aspects_flags: &aspects_flags
- "--config=rustfmt"
- "--config=clippy"
default_linux_targets: &default_linux_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "..."
- "@examples//..."
- "//..."
# TODO: Switch manual tag to platform constraint after bazel 4.0.
- "//test/versioned_dylib:versioned_dylib_test"
# Bindgen currently only has a working toolchain for 18.04
- "-@examples//ffi/rust_calling_c/simple/..."
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
- "//..."
- "-//bindgen/..."
- "-//test/test_env/..."
- "-//test/proto/..."
- "-//tools/rust_analyzer/..."
- "-//test/rustfmt/..."
# rust_doc_test targets are currently broken on windows
# see: https://github.com/bazelbuild/rules_rust/issues/887
- "-//test/chained_direct_deps:mod3_doc_test"
tasks:
ubuntu1804:
build_targets: *default_linux_targets
test_targets:
- "..."
- "@examples//..."
# TODO: Switch manual tag to platform constraint after bazel 4.0.
- "//test/versioned_dylib:versioned_dylib_test"
build_flags:
- "--config=rustfmt"
- "--config=clippy"
ubuntu2004:
name: "Minimum Supported Version"
bazel: "3.5.0"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags:
- "--config=rustfmt"
- "--config=clippy"
macos:
osx_targets: &osx_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "..."
- "@examples//..."
# This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
build_targets: *osx_targets
test_targets: *osx_targets
build_flags:
- "--config=rustfmt"
- "--config=clippy"
rbe_ubuntu1604:
build_targets:
- "//..."
test_targets:
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "..."
- "//..."
- "//test/..."
- "@examples//..."
- "-//test/conflicting_deps:conflicting_deps_test"
# rust_doc_test is likely not fully sandboxed
- "-//test/chained_direct_deps:mod3_doc_test"
- "-@examples//fibonacci:fibonacci_doc_test"
- "-@examples//hello_lib:hello_lib_doc_test"
- "-@examples//ffi/rust_calling_c/simple/..."
# See https://github.com/bazelbuild/bazel/issues/9987
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
build_flags:
- "--config=rustfmt"
- "--config=clippy"
macos:
build_targets: *default_macos_targets
test_targets: *default_macos_targets
build_flags: *aspects_flags
windows:
build_flags:
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
- "--config=rustfmt"
- "--config=clippy"
windows_targets: &windows_targets
build_targets: *default_windows_targets
test_targets: *default_windows_targets
ubuntu2004_with_aspects:
name: With Aspects
platform: ubuntu2004
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags: *aspects_flags
rbe_ubuntu1604_with_aspects:
name: With Aspects
platform: rbe_ubuntu1604
build_targets: *default_linux_targets
test_targets:
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "..."
- "-//bindgen/..."
- "-//test/test_env/..."
- "-//test/proto/..."
- "-//tools/rust_analyzer/..."
- "-//test/rustfmt/..."
- "@examples//..."
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
- "-@examples//ffi/rust_calling_c:matrix_dynamically_linked"
- "-@examples//ffi/rust_calling_c/simple/..."
- "-@examples//sys/..."
- "-@examples//proto/..."
- "-@examples//wasm/..."
# rust_doc_test targets are currently broken on windows
# see: https://github.com/bazelbuild/rules_rust/issues/887
- "-@examples//hello_lib:hello_lib_doc_test"
- "-@examples//fibonacci:fibonacci_doc_test"
- "//test/..."
- "-//test/conflicting_deps:conflicting_deps_test"
# rust_doc_test is likely not fully sandboxed
- "-//test/chained_direct_deps:mod3_doc_test"
build_targets: *windows_targets
test_targets: *windows_targets
examples:
name: Examples
platform: ubuntu1804
working_directory: examples
test_targets:
- //...
build_flags: *aspects_flags
macos_with_aspects:
name: With Aspects
platform: macos
build_targets: *default_macos_targets
test_targets: *default_macos_targets
build_flags: *aspects_flags
windows_with_aspects:
name: With Aspects
platform: windows
build_flags:
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
- "--config=rustfmt"
- "--config=clippy"
docs_linux:
name: Docs
build_targets: *default_windows_targets
test_targets: *default_windows_targets
ubuntu2004_clang:
name: With Clang
platform: ubuntu2004
build_flags:
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
# TODO(hlopko): Make this work (some tests were failing)
# - "--linkopt=-fuse-ld=lld"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
ubuntu1804:
name: "Min Bazel Version"
bazel: "3.5.0"
platform: ubuntu1804
build_targets: *default_linux_targets
test_targets: *default_linux_targets
ubuntu1804_with_aspects:
name: "Min Bazel Version With Aspects"
bazel: "3.5.0"
platform: ubuntu1804
build_targets: *default_linux_targets
test_targets: *default_linux_targets
build_flags: *aspects_flags
linux_docs:
name: Docs
platform: ubuntu2004
working_directory: docs
build_targets:
- //...
run_targets:
- "//:test_docs"
clippy_failure:
name: Negative Clippy Tests
platform: ubuntu1804
platform: ubuntu2004
run_targets:
- "//test/clippy:clippy_failure_test"
rustfmt_failure:
name: Negative Rustfmt Tests
platform: ubuntu2004
run_targets:
- "//test/rustfmt:test_runner"
ubuntu2004_clang:
name: Ubuntu 20.04 with Clang
ubuntu2004_examples:
name: Examples
platform: ubuntu2004
working_directory: examples
build_targets:
- "//..."
test_targets:
- "//..."
build_flags: *aspects_flags
rbe_ubuntu1604_examples:
name: Examples
platform: rbe_ubuntu1604
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/..."
# rust_doc_test is likely not fully sandboxed
- "-//fibonacci:fibonacci_doc_test"
- "-//hello_lib:hello_lib_doc_test"
- "-//ffi/rust_calling_c/simple/..."
# See https://github.com/bazelbuild/bazel/issues/9987
- "-//ffi/rust_calling_c:matrix_dylib_test"
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
- "//..."
# This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
- "-//ffi/rust_calling_c:matrix_dylib_test"
build_flags: *aspects_flags
windows_examples:
name: Examples
platform: windows
working_directory: examples
build_flags:
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
- "--config=rustfmt"
- "--config=clippy"
- "--repo_env=CC=clang"
# TODO(hlopko): Make this work (some tests were failing)
# - "--linkopt=-fuse-ld=lld"
build_targets: *default_linux_targets
test_targets: *default_linux_targets
windows_targets: &windows_targets
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
- "//..."
- "-//ffi/rust_calling_c:matrix_dylib_test"
- "-//ffi/rust_calling_c:matrix_dynamically_linked"
- "-//ffi/rust_calling_c/simple/..."
- "-//sys/..."
- "-//proto/..."
- "-//wasm/..."
# rust_doc_test targets are currently broken on windows
# see: https://github.com/bazelbuild/rules_rust/issues/887
- "-//hello_lib:hello_lib_doc_test"
- "-//fibonacci:fibonacci_doc_test"
build_targets: *windows_targets
test_targets: *windows_targets
crate_universe_examples_ubuntu2004:
name: Crate Universe Examples
platform: ubuntu2004
Expand All @@ -130,9 +191,7 @@ tasks:
- "//..."
test_targets:
- "//..."
build_flags:
- "--config=rustfmt"
- "--config=clippy"
build_flags: *aspects_flags
crate_universe_rbe_ubuntu1604:
name: Crate Universe Examples
platform: rbe_ubuntu1604
Expand All @@ -143,9 +202,7 @@ tasks:
- "//..."
test_targets:
- "//..."
build_flags:
- "--config=rustfmt"
- "--config=clippy"
build_flags: *aspects_flags
crate_universe_examples_macos:
name: Crate Universe Examples
platform: macos
Expand All @@ -156,9 +213,7 @@ tasks:
- "//..."
test_targets:
- "//..."
build_flags:
- "--config=rustfmt"
- "--config=clippy"
build_flags: *aspects_flags
crate_universe_examples_windows:
name: Crate Universe Examples
platform: windows
Expand Down
38 changes: 0 additions & 38 deletions WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -52,41 +52,3 @@ load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
# Use this as is if you are using the rbe_ubuntu16_04 container,
# otherwise refer to RBE docs.
rbe_autoconfig(name = "buildkite_config")

# Load all dependencies for examples

local_repository(
name = "examples",
path = "examples",
)

load("@examples//:examples_repositories.bzl", examples_repositories = "repositories")

examples_repositories()

load("@examples//:examples_deps.bzl", examples_deps = "deps")

examples_deps()

load("@examples//:examples_transitive_deps.bzl", examples_transitive_deps = "transitive_deps")

examples_transitive_deps(is_top_level = True)

# Load all dependencies for docs

local_repository(
name = "docs",
path = "docs",
)

load("@docs//:docs_repositories.bzl", docs_repositories = "repositories")

docs_repositories()

load("@docs//:docs_deps.bzl", docs_deps = "deps")

docs_deps()

load("@docs//:docs_transitive_deps.bzl", docs_transitive_deps = "transitive_deps")

docs_transitive_deps()
19 changes: 19 additions & 0 deletions examples/WORKSPACE.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,22 @@ deps()
load(":examples_transitive_deps.bzl", "transitive_deps")

transitive_deps()

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
name = "bazel_toolchains",
sha256 = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024",
strip_prefix = "bazel-toolchains-4.1.0",
urls = [
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
"https://github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
],
)

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")

# Creates a default toolchain config for RBE.
# Use this as is if you are using the rbe_ubuntu16_04 container,
# otherwise refer to RBE docs.
rbe_autoconfig(name = "buildkite_config")
7 changes: 7 additions & 0 deletions examples/per_platform_printer/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ rust_library(
":print_windows.rs",
],
}),
# Because each os specific file is conditionally added to the target,
# rustfmt does not have all sources to complete formatting. To avoid
# this failure, rustfmt is not run on this target
tags = ["norustfmt"],
)

rust_test(
name = "printer_test",
crate = ":printer",
# The same rational used for `printer` applies here. Do not run rustfmt
# since not all sources are available.
tags = ["norustfmt"],
)
2 changes: 1 addition & 1 deletion proto/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ rust_binary(
toolchain(
name = "default-proto-toolchain",
toolchain = ":default-proto-toolchain-impl",
toolchain_type = "//proto:toolchain",
toolchain_type = "@rules_rust//proto:toolchain",
)

rust_proto_toolchain(name = "default-proto-toolchain-impl")
Expand Down
4 changes: 4 additions & 0 deletions test/inline_test_with_deps/test_with_srcs/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ rust_library(
name = "inline",
srcs = ["src/lib.rs"],
edition = "2018",
# Not all source files are included in this this target (`extra.rs`)
# and as a result, rustfmt complains about a missing module. Do not
# run rustfmt to avoid this issue.
tags = ["norustfmt"],
)

rust_test(
Expand Down