Skip to content

Commit 53de1e9

Browse files
committed
Updated CI structure to increase coverage
1 parent 0ad043a commit 53de1e9

File tree

15 files changed

+220
-145
lines changed

15 files changed

+220
-145
lines changed

.bazelci/presubmit.yml

+134-81
Original file line numberDiff line numberDiff line change
@@ -1,120 +1,179 @@
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/..."
1019
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"
2120
ubuntu2004:
22-
name: "Minimum Supported Version"
23-
bazel: "3.5.0"
2421
build_targets: *default_linux_targets
2522
test_targets: *default_linux_targets
26-
build_flags:
27-
- "--config=rustfmt"
28-
- "--config=clippy"
29-
macos:
30-
osx_targets: &osx_targets
23+
rbe_ubuntu1604:
24+
build_targets:
25+
- "//..."
26+
test_targets:
3127
- "--" # 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
28+
- "//..."
29+
- "//test/..."
30+
- "-//test/conflicting_deps:conflicting_deps_test"
31+
# rust_doc_test is likely not fully sandboxed
32+
- "-//test/chained_direct_deps:mod3_doc_test"
33+
macos:
34+
build_targets: *default_macos_targets
35+
test_targets: *default_macos_targets
36+
build_flags: *aspects_flags
37+
windows:
3838
build_flags:
39+
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
3940
- "--config=rustfmt"
4041
- "--config=clippy"
41-
rbe_ubuntu1604:
42+
build_targets: *default_windows_targets
43+
test_targets: *default_windows_targets
44+
ubuntu2004_with_aspects:
45+
name: With Aspects
46+
platform: ubuntu2004
47+
build_targets: *default_linux_targets
48+
test_targets: *default_linux_targets
49+
build_flags: *aspects_flags
50+
rbe_ubuntu1604_with_aspects:
51+
name: With Aspects
52+
platform: rbe_ubuntu1604
53+
build_targets: *default_linux_targets
4254
test_targets:
4355
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
4456
- "..."
4557
- "//test/..."
46-
- "@examples//..."
4758
- "-//test/conflicting_deps:conflicting_deps_test"
4859
# rust_doc_test is likely not fully sandboxed
4960
- "-//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"
58-
windows:
61+
build_flags: *aspects_flags
62+
macos_with_aspects:
63+
name: With Aspects
64+
platform: macos
65+
build_targets: *default_macos_targets
66+
test_targets: *default_macos_targets
67+
build_flags: *aspects_flags
68+
windows_with_aspects:
69+
name: With Aspects
70+
platform: windows
5971
build_flags:
6072
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
6173
- "--config=rustfmt"
6274
- "--config=clippy"
63-
windows_targets: &windows_targets
64-
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
65-
- "..."
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-
build_targets: *windows_targets
79-
test_targets: *windows_targets
80-
examples:
81-
name: Examples
82-
platform: ubuntu1804
83-
working_directory: examples
84-
test_targets:
85-
- //...
75+
build_targets: *default_windows_targets
76+
test_targets: *default_windows_targets
77+
ubuntu2004_clang:
78+
name: With Clang
79+
platform: ubuntu2004
8680
build_flags:
8781
- "--config=rustfmt"
8882
- "--config=clippy"
89-
docs_linux:
90-
name: Docs
83+
- "--repo_env=CC=clang"
84+
# TODO(hlopko): Make this work (some tests were failing)
85+
# - "--linkopt=-fuse-ld=lld"
86+
build_targets: *default_linux_targets
87+
test_targets: *default_linux_targets
88+
ubuntu1804:
89+
name: "Min Bazel Version"
90+
bazel: "3.5.0"
91+
platform: ubuntu1804
92+
build_targets: *default_linux_targets
93+
test_targets: *default_linux_targets
94+
ubuntu1804_with_aspects:
95+
name: "Min Bazel Version With Aspects"
96+
bazel: "3.5.0"
9197
platform: ubuntu1804
98+
build_targets: *default_linux_targets
99+
test_targets: *default_linux_targets
100+
build_flags: *aspects_flags
101+
linux_docs:
102+
name: Docs
103+
platform: ubuntu2004
92104
working_directory: docs
93105
build_targets:
94106
- //...
95107
run_targets:
96108
- "//:test_docs"
97109
clippy_failure:
98110
name: Negative Clippy Tests
99-
platform: ubuntu1804
111+
platform: ubuntu2004
100112
run_targets:
101113
- "//test/clippy:clippy_failure_test"
102114
rustfmt_failure:
103115
name: Negative Rustfmt Tests
104116
platform: ubuntu2004
105117
run_targets:
106118
- "//test/rustfmt:test_runner"
107-
ubuntu2004_clang:
108-
name: Ubuntu 20.04 with Clang
119+
ubuntu2004_examples:
120+
name: Examples
109121
platform: ubuntu2004
122+
working_directory: examples
123+
build_targets:
124+
- "//..."
125+
test_targets:
126+
- "//..."
127+
build_flags: *aspects_flags
128+
rbe_ubuntu1604_examples:
129+
name: Examples
130+
platform: rbe_ubuntu1604
131+
working_directory: examples
132+
rbe_examples_targets: &rbe_examples_targets
133+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
134+
- "//..."
135+
# TODO: This requires an updated `rules_foreign_cc`
136+
- "-//sys/..."
137+
# rust_doc_test is likely not fully sandboxed
138+
- "-//fibonacci:fibonacci_doc_test"
139+
- "-//hello_lib:hello_lib_doc_test"
140+
- "-//ffi/rust_calling_c/simple/..."
141+
# See https://github.com/bazelbuild/bazel/issues/9987
142+
- "-//ffi/rust_calling_c:matrix_dylib_test"
143+
build_targets: *rbe_examples_targets
144+
test_targets: *rbe_examples_targets
145+
build_flags: *aspects_flags
146+
macos_examples:
147+
name: Examples
148+
platform: macos
149+
working_directory: examples
150+
build_targets:
151+
- "//..."
152+
test_targets:
153+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
154+
- "//..."
155+
# This test requires --incompatible_macos_set_install_name and Bazel 4.2.0+
156+
- "-//ffi/rust_calling_c:matrix_dylib_test"
157+
build_flags: *aspects_flags
158+
windows_examples:
159+
name: Examples
160+
platform: windows
161+
working_directory: examples
110162
build_flags:
163+
- "--enable_runfiles" # this is not enabled by default on windows and is necessary for the cargo build scripts
111164
- "--config=rustfmt"
112165
- "--config=clippy"
113-
- "--repo_env=CC=clang"
114-
# TODO(hlopko): Make this work (some tests were failing)
115-
# - "--linkopt=-fuse-ld=lld"
116-
build_targets: *default_linux_targets
117-
test_targets: *default_linux_targets
166+
windows_targets: &windows_targets
167+
- "--" # Allows negative patterns; hack for https://github.com/bazelbuild/continuous-integration/pull/245
168+
- "//..."
169+
- "-//ffi/rust_calling_c:matrix_dylib_test"
170+
- "-//ffi/rust_calling_c:matrix_dynamically_linked"
171+
- "-//ffi/rust_calling_c/simple/..."
172+
- "-//sys/..."
173+
- "-//proto/..."
174+
- "-//wasm/..."
175+
build_targets: *windows_targets
176+
test_targets: *windows_targets
118177
crate_universe_examples_ubuntu2004:
119178
name: Crate Universe Examples
120179
platform: ubuntu2004
@@ -125,9 +184,7 @@ tasks:
125184
- "//..."
126185
test_targets:
127186
- "//..."
128-
build_flags:
129-
- "--config=rustfmt"
130-
- "--config=clippy"
187+
build_flags: *aspects_flags
131188
crate_universe_rbe_ubuntu1604:
132189
name: Crate Universe Examples
133190
platform: rbe_ubuntu1604
@@ -138,9 +195,7 @@ tasks:
138195
- "//..."
139196
test_targets:
140197
- "//..."
141-
build_flags:
142-
- "--config=rustfmt"
143-
- "--config=clippy"
198+
build_flags: *aspects_flags
144199
crate_universe_examples_macos:
145200
name: Crate Universe Examples
146201
platform: macos
@@ -151,9 +206,7 @@ tasks:
151206
- "//..."
152207
test_targets:
153208
- "//..."
154-
build_flags:
155-
- "--config=rustfmt"
156-
- "--config=clippy"
209+
build_flags: *aspects_flags
157210
crate_universe_examples_windows:
158211
name: Crate Universe Examples
159212
platform: windows

WORKSPACE.bazel

+2-40
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ load("@rules_rust//bindgen:repositories.bzl", "rust_bindgen_repositories")
1616

1717
rust_bindgen_repositories()
1818

19-
load("@rules_rust//tools/rust_analyzer/raze:crates.bzl", "rules_rust_tools_rust_analyzer_fetch_remote_crates")
19+
load("@rules_rust//tools/rust_analyzer:deps.bzl", "rust_analyzer_deps")
2020

21-
rules_rust_tools_rust_analyzer_fetch_remote_crates()
21+
rust_analyzer_deps()
2222

2323
load("@rules_rust//wasm_bindgen:repositories.bzl", "rust_wasm_bindgen_repositories")
2424

@@ -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()

docs/WORKSPACE.bazel

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
workspace(name = "io_bazel_rules_rust_docs")
1+
workspace(name = "rules_rust_docs")
22

33
load(":docs_repositories.bzl", "repositories")
44

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/examples_deps.bzl

+11-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ load("@rules_rust//proto:repositories.bzl", "rust_proto_repositories")
1010
load("@rules_rust//rust:repositories.bzl", "rust_repositories", "rust_repository_set")
1111
load("@rules_rust//wasm_bindgen:repositories.bzl", "rust_wasm_bindgen_repositories")
1212

13+
_LIBC_BUILD_FILE_CONTENT = """\
14+
load("@rules_rust//rust:rust.bzl", "rust_library")
15+
16+
rust_library(
17+
name = "libc",
18+
srcs = glob(["src/**/*.rs"]),
19+
visibility = ["//visibility:public"],
20+
)
21+
"""
22+
1323
def deps():
1424
"""Define dependencies for `rules_rust` examples"""
1525

@@ -43,7 +53,7 @@ def deps():
4353
maybe(
4454
http_archive,
4555
name = "libc",
46-
build_file = "@examples//ffi:libc.BUILD",
56+
build_file_content = _LIBC_BUILD_FILE_CONTENT,
4757
sha256 = "1ac4c2ac6ed5a8fb9020c166bc63316205f1dc78d4b964ad31f4f21eb73f0c6d",
4858
strip_prefix = "libc-0.2.20",
4959
urls = [

0 commit comments

Comments
 (0)