Skip to content

Commit 0ba01ae

Browse files
committed
Updated CI structure to increase coverage
1 parent e6e2e1f commit 0ba01ae

File tree

6 files changed

+172
-125
lines changed

6 files changed

+172
-125
lines changed

.bazelci/presubmit.yml

+141-86
Original file line numberDiff line numberDiff line change
@@ -1,125 +1,186 @@
11
---
2+
aspects_flags: &aspects_flags
3+
- "--config=rustfmt"
4+
- "--config=clippy"
25
default_linux_targets: &default_linux_targets
3-
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
4-
- "..."
5-
- "@examples//..."
6+
- "//..."
67
# TODO: Switch manual tag to platform constraint after bazel 4.0.
78
- "//test/versioned_dylib:versioned_dylib_test"
8-
# Bindgen currently only has a working toolchain for 18.04
9-
- "-@examples//ffi/rust_calling_c/simple/..."
9+
default_macos_targets: &default_macos_targets
10+
- "//..."
11+
default_windows_targets: &default_windows_targets
12+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
13+
- "//..."
14+
- "-//bindgen/..."
15+
- "-//test/test_env/..."
16+
- "-//test/proto/..."
17+
- "-//tools/rust_analyzer/..."
18+
- "-//test/rustfmt/..."
19+
# rust_doc_test targets are currently broken on windows
20+
# see: https://github.com/bazelbuild/rules_rust/issues/887
21+
- "-//test/chained_direct_deps:mod3_doc_test"
1022
tasks:
11-
ubuntu1804:
12-
build_targets: *default_linux_targets
13-
test_targets:
14-
- "..."
15-
- "@examples//..."
16-
# TODO: Switch manual tag to platform constraint after bazel 4.0.
17-
- "//test/versioned_dylib:versioned_dylib_test"
18-
build_flags:
19-
- "--config=rustfmt"
20-
- "--config=clippy"
2123
ubuntu2004:
22-
name: "Minimum Supported Version"
23-
bazel: "3.5.0"
2424
build_targets: *default_linux_targets
2525
test_targets: *default_linux_targets
26-
build_flags:
27-
- "--config=rustfmt"
28-
- "--config=clippy"
29-
macos:
30-
osx_targets: &osx_targets
31-
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
32-
- "..."
33-
- "@examples//..."
34-
# This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
35-
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
36-
build_targets: *osx_targets
37-
test_targets: *osx_targets
38-
build_flags:
39-
- "--config=rustfmt"
40-
- "--config=clippy"
4126
rbe_ubuntu1604:
27+
build_targets:
28+
- "//..."
4229
test_targets:
4330
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
44-
- "..."
31+
- "//..."
4532
- "//test/..."
46-
- "@examples//..."
4733
- "-//test/conflicting_deps:conflicting_deps_test"
4834
# rust_doc_test is likely not fully sandboxed
4935
- "-//test/chained_direct_deps:mod3_doc_test"
50-
- "-@examples//fibonacci:fibonacci_doc_test"
51-
- "-@examples//hello_lib:hello_lib_doc_test"
52-
- "-@examples//ffi/rust_calling_c/simple/..."
53-
# See https://github.com/bazelbuild/bazel/issues/9987
54-
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
55-
build_flags:
56-
- "--config=rustfmt"
57-
- "--config=clippy"
36+
macos:
37+
build_targets: *default_macos_targets
38+
test_targets: *default_macos_targets
39+
build_flags: *aspects_flags
5840
windows:
5941
build_flags:
6042
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
6143
- "--config=rustfmt"
6244
- "--config=clippy"
63-
windows_targets: &windows_targets
45+
build_targets: *default_windows_targets
46+
test_targets: *default_windows_targets
47+
ubuntu2004_with_aspects:
48+
name: With Aspects
49+
platform: ubuntu2004
50+
build_targets: *default_linux_targets
51+
test_targets: *default_linux_targets
52+
build_flags: *aspects_flags
53+
rbe_ubuntu1604_with_aspects:
54+
name: With Aspects
55+
platform: rbe_ubuntu1604
56+
build_targets: *default_linux_targets
57+
test_targets:
6458
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
6559
- "..."
66-
- "-//bindgen/..."
67-
- "-//test/test_env/..."
68-
- "-//test/proto/..."
69-
- "-//tools/rust_analyzer/..."
70-
- "-//test/rustfmt/..."
71-
- "@examples//..."
72-
- "-@examples//ffi/rust_calling_c:matrix_dylib_test"
73-
- "-@examples//ffi/rust_calling_c:matrix_dynamically_linked"
74-
- "-@examples//ffi/rust_calling_c/simple/..."
75-
- "-@examples//sys/..."
76-
- "-@examples//proto/..."
77-
- "-@examples//wasm/..."
78-
# rust_doc_test targets are currently broken on windows
79-
# see: https://github.com/bazelbuild/rules_rust/issues/887
80-
- "-@examples//hello_lib:hello_lib_doc_test"
81-
- "-@examples//fibonacci:fibonacci_doc_test"
60+
- "//test/..."
61+
- "-//test/conflicting_deps:conflicting_deps_test"
62+
# rust_doc_test is likely not fully sandboxed
8263
- "-//test/chained_direct_deps:mod3_doc_test"
83-
build_targets: *windows_targets
84-
test_targets: *windows_targets
85-
examples:
86-
name: Examples
87-
platform: ubuntu1804
88-
working_directory: examples
89-
test_targets:
90-
- //...
64+
build_flags: *aspects_flags
65+
macos_with_aspects:
66+
name: With Aspects
67+
platform: macos
68+
build_targets: *default_macos_targets
69+
test_targets: *default_macos_targets
70+
build_flags: *aspects_flags
71+
windows_with_aspects:
72+
name: With Aspects
73+
platform: windows
9174
build_flags:
75+
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
9276
- "--config=rustfmt"
9377
- "--config=clippy"
94-
docs_linux:
95-
name: Docs
78+
build_targets: *default_windows_targets
79+
test_targets: *default_windows_targets
80+
ubuntu2004_clang:
81+
name: With Clang
82+
platform: ubuntu2004
83+
build_flags:
84+
- "--config=rustfmt"
85+
- "--config=clippy"
86+
- "--repo_env=CC=clang"
87+
# TODO(hlopko): Make this work (some tests were failing)
88+
# - "--linkopt=-fuse-ld=lld"
89+
build_targets: *default_linux_targets
90+
test_targets: *default_linux_targets
91+
ubuntu1804:
92+
name: "Min Bazel Version"
93+
bazel: "3.5.0"
94+
platform: ubuntu1804
95+
build_targets: *default_linux_targets
96+
test_targets: *default_linux_targets
97+
ubuntu1804_with_aspects:
98+
name: "Min Bazel Version With Aspects"
99+
bazel: "3.5.0"
96100
platform: ubuntu1804
101+
build_targets: *default_linux_targets
102+
test_targets: *default_linux_targets
103+
build_flags: *aspects_flags
104+
linux_docs:
105+
name: Docs
106+
platform: ubuntu2004
97107
working_directory: docs
98108
build_targets:
99109
- //...
100110
run_targets:
101111
- "//:test_docs"
102112
clippy_failure:
103113
name: Negative Clippy Tests
104-
platform: ubuntu1804
114+
platform: ubuntu2004
105115
run_targets:
106116
- "//test/clippy:clippy_failure_test"
107117
rustfmt_failure:
108118
name: Negative Rustfmt Tests
109119
platform: ubuntu2004
110120
run_targets:
111121
- "//test/rustfmt:test_runner"
112-
ubuntu2004_clang:
113-
name: Ubuntu 20.04 with Clang
122+
ubuntu2004_examples:
123+
name: Examples
114124
platform: ubuntu2004
125+
working_directory: examples
126+
build_targets:
127+
- "//..."
128+
test_targets:
129+
- "//..."
130+
build_flags: *aspects_flags
131+
rbe_ubuntu1604_examples:
132+
name: Examples
133+
platform: rbe_ubuntu1604
134+
working_directory: examples
135+
rbe_examples_targets: &rbe_examples_targets
136+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
137+
- "//..."
138+
# TODO: This requires an updated `rules_foreign_cc`
139+
- "-//sys/..."
140+
# rust_doc_test is likely not fully sandboxed
141+
- "-//fibonacci:fibonacci_doc_test"
142+
- "-//hello_lib:hello_lib_doc_test"
143+
- "-//ffi/rust_calling_c/simple/..."
144+
# See https://github.com/bazelbuild/bazel/issues/9987
145+
- "-//ffi/rust_calling_c:matrix_dylib_test"
146+
build_targets: *rbe_examples_targets
147+
test_targets: *rbe_examples_targets
148+
build_flags: *aspects_flags
149+
macos_examples:
150+
name: Examples
151+
platform: macos
152+
working_directory: examples
153+
build_targets:
154+
- "//..."
155+
test_targets:
156+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
157+
- "//..."
158+
# This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
159+
- "-//ffi/rust_calling_c:matrix_dylib_test"
160+
build_flags: *aspects_flags
161+
windows_examples:
162+
name: Examples
163+
platform: windows
164+
working_directory: examples
115165
build_flags:
166+
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
116167
- "--config=rustfmt"
117168
- "--config=clippy"
118-
- "--repo_env=CC=clang"
119-
# TODO(hlopko): Make this work (some tests were failing)
120-
# - "--linkopt=-fuse-ld=lld"
121-
build_targets: *default_linux_targets
122-
test_targets: *default_linux_targets
169+
windows_targets: &windows_targets
170+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
171+
- "//..."
172+
- "-//ffi/rust_calling_c:matrix_dylib_test"
173+
- "-//ffi/rust_calling_c:matrix_dynamically_linked"
174+
- "-//ffi/rust_calling_c/simple/..."
175+
- "-//sys/..."
176+
- "-//proto/..."
177+
- "-//wasm/..."
178+
# rust_doc_test targets are currently broken on windows
179+
# see: https://github.com/bazelbuild/rules_rust/issues/887
180+
- "-//hello_lib:hello_lib_doc_test"
181+
- "-//fibonacci:fibonacci_doc_test"
182+
build_targets: *windows_targets
183+
test_targets: *windows_targets
123184
crate_universe_examples_ubuntu2004:
124185
name: Crate Universe Examples
125186
platform: ubuntu2004
@@ -130,9 +191,7 @@ tasks:
130191
- "//..."
131192
test_targets:
132193
- "//..."
133-
build_flags:
134-
- "--config=rustfmt"
135-
- "--config=clippy"
194+
build_flags: *aspects_flags
136195
crate_universe_rbe_ubuntu1604:
137196
name: Crate Universe Examples
138197
platform: rbe_ubuntu1604
@@ -143,9 +202,7 @@ tasks:
143202
- "//..."
144203
test_targets:
145204
- "//..."
146-
build_flags:
147-
- "--config=rustfmt"
148-
- "--config=clippy"
205+
build_flags: *aspects_flags
149206
crate_universe_examples_macos:
150207
name: Crate Universe Examples
151208
platform: macos
@@ -156,9 +213,7 @@ tasks:
156213
- "//..."
157214
test_targets:
158215
- "//..."
159-
build_flags:
160-
- "--config=rustfmt"
161-
- "--config=clippy"
216+
build_flags: *aspects_flags
162217
crate_universe_examples_windows:
163218
name: Crate Universe Examples
164219
platform: windows

WORKSPACE.bazel

-38
Original file line numberDiff line numberDiff line change
@@ -52,41 +52,3 @@ load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
5252
# Use this as is if you are using the rbe_ubuntu16_04 container,
5353
# otherwise refer to RBE docs.
5454
rbe_autoconfig(name = "buildkite_config")
55-
56-
# Load all dependencies for examples
57-
58-
local_repository(
59-
name = "examples",
60-
path = "examples",
61-
)
62-
63-
load("@examples//:examples_repositories.bzl", examples_repositories = "repositories")
64-
65-
examples_repositories()
66-
67-
load("@examples//:examples_deps.bzl", examples_deps = "deps")
68-
69-
examples_deps()
70-
71-
load("@examples//:examples_transitive_deps.bzl", examples_transitive_deps = "transitive_deps")
72-
73-
examples_transitive_deps(is_top_level = True)
74-
75-
# Load all dependencies for docs
76-
77-
local_repository(
78-
name = "docs",
79-
path = "docs",
80-
)
81-
82-
load("@docs//:docs_repositories.bzl", docs_repositories = "repositories")
83-
84-
docs_repositories()
85-
86-
load("@docs//:docs_deps.bzl", docs_deps = "deps")
87-
88-
docs_deps()
89-
90-
load("@docs//:docs_transitive_deps.bzl", docs_transitive_deps = "transitive_deps")
91-
92-
docs_transitive_deps()

examples/WORKSPACE.bazel

+19
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,22 @@ deps()
1111
load(":examples_transitive_deps.bzl", "transitive_deps")
1212

1313
transitive_deps()
14+
15+
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
16+
17+
http_archive(
18+
name = "bazel_toolchains",
19+
sha256 = "179ec02f809e86abf56356d8898c8bd74069f1bd7c56044050c2cd3d79d0e024",
20+
strip_prefix = "bazel-toolchains-4.1.0",
21+
urls = [
22+
"https://mirror.bazel.build/github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
23+
"https://github.com/bazelbuild/bazel-toolchains/releases/download/4.1.0/bazel-toolchains-4.1.0.tar.gz",
24+
],
25+
)
26+
27+
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
28+
29+
# Creates a default toolchain config for RBE.
30+
# Use this as is if you are using the rbe_ubuntu16_04 container,
31+
# otherwise refer to RBE docs.
32+
rbe_autoconfig(name = "buildkite_config")

examples/per_platform_printer/BUILD.bazel

+7
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,16 @@ rust_library(
3131
":print_windows.rs",
3232
],
3333
}),
34+
# Because each os specific file is conditionally added to the target,
35+
# rustfmt does not have all sources to complete formatting. To avoid
36+
# this failure, rustfmt is not run on this target
37+
tags = ["norustfmt"],
3438
)
3539

3640
rust_test(
3741
name = "printer_test",
3842
crate = ":printer",
43+
# The same rational used for `printer` applies here. Do not run rustfmt
44+
# since not all sources are available.
45+
tags = ["norustfmt"],
3946
)

proto/BUILD.bazel

+1-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ rust_binary(
2525
toolchain(
2626
name = "default-proto-toolchain",
2727
toolchain = ":default-proto-toolchain-impl",
28-
toolchain_type = "//proto:toolchain",
28+
toolchain_type = "@rules_rust//proto:toolchain",
2929
)
3030

3131
rust_proto_toolchain(name = "default-proto-toolchain-impl")

test/inline_test_with_deps/test_with_srcs/BUILD.bazel

+4
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@ rust_library(
1010
name = "inline",
1111
srcs = ["src/lib.rs"],
1212
edition = "2018",
13+
# Not all source files are included in this this target (`extra.rs`)
14+
# and as a result, rustfmt complains about a missing module. Do not
15+
# run rustfmt to avoid this issue.
16+
tags = ["norustfmt"],
1317
)
1418

1519
rust_test(

0 commit comments

Comments
 (0)