Skip to content

Commit

Permalink
Updated CI structure to increase coverage
Browse files Browse the repository at this point in the history
  • Loading branch information
UebelAndre committed Aug 15, 2021
1 parent 0346cc4 commit 49182f9
Show file tree
Hide file tree
Showing 6 changed files with 172 additions and 125 deletions.
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

0 comments on commit 49182f9

Please sign in to comment.