@@ -16,8 +16,6 @@ default: lint test
16
16
17
17
lint : sh-lint md-lint rs-clippy proxy-init-lint action-lint action-dev-check
18
18
19
- build : proxy-init-build validator-build
20
-
21
19
test : rs-test proxy-init-test-unit proxy-init-test-integration
22
20
23
21
# Check whether the Go code is formatted.
@@ -36,39 +34,6 @@ rs-toolchain := ""
36
34
37
35
export RUST_BACKTRACE := env_var_or_default("RUST_BACKTRACE", "short")
38
36
39
- # The version name to use for packages.
40
- _validator-version := env_var_or_default("VALIDATOR_VERSION", `` `
41
- cargo metadata --format-version=1 \
42
- | jq -r ' .packages[] | select(.name == "linkerd-network-validator") | .version' \
43
- | head -n 1
44
- ` `` )
45
-
46
- # The architecture name to use for packages. Either 'amd64', 'arm64', or 'arm'.
47
- _arch := env_var_or_default("ARCH", "amd64")
48
-
49
- # If a `package_arch` is specified, then we change the default cargo `--target`
50
- # to support cross-compilation. Otherwise, we use `rustup` to find the default.
51
- _cargo-target := if _arch == "amd64" {
52
- "x86_64-unknown-linux-musl"
53
- } else if _arch == "arm64" {
54
- "aarch64-unknown-linux-musl"
55
- } else if _arch == "arm" {
56
- "armv7-unknown-linux-musleabihf"
57
- } else {
58
- `rustup show | sed -n 's/^Default host : \(.* \)/\1/p'`
59
- }
60
-
61
- # Support cross-compilation when `_arch` changes.
62
- export CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER := "aarch64-linux-gnu-gcc"
63
- export CARGO_TARGET_ARMV7_UNKNOWN_LINUX_GNUEABIHF_LINKER := "arm-linux-gnueabihf-gcc"
64
- _strip := if _arch == "arm64" { "aarch64-linux-gnu-strip" } else if _arch == "arm" { "arm-linux-gnueabihf-strip" } else { "strip" }
65
-
66
- _target-dir := "target" / _cargo-target / rs-build-type
67
- _validator-bin := _target-dir / "linkerd-network-validator"
68
- _validator-package-name := "linkerd-network-validator-" + _validator-version + "-" + _arch
69
- _validator-package-dir := "target/package" / _validator-package-name
70
- _shasum := "shasum -a 256"
71
-
72
37
_cargo := env_var_or_default("CARGO", "cargo") + if rs-toolchain != "" { " +" + rs-toolchain } else { "" }
73
38
74
39
# Fetch Rust dependencies
@@ -81,29 +46,26 @@ rs-fmt-check:
81
46
82
47
# Lint Rust code
83
48
rs-clippy :
84
- {{ _cargo }} clippy --frozen --workspace --all-targets --no-deps {{ _cargo-fmt }}
49
+ {{ _cargo }} clippy {{ _cargo-build-flags }} --all-targets --no-deps {{ _cargo-fmt }}
85
50
86
51
# Audit Rust dependencies
87
52
rs-audit-deps :
88
53
{{ _cargo }} deny check
89
54
90
55
# Build Rust unit and integration tests
91
56
rs-test-build :
92
- {{ _cargo-test }} --no-run --frozen --workspace {{ _cargo-fmt }}
57
+ {{ _cargo-test }} {{ _cargo-build-flags }} --workspace --no-run {{ _cargo-fmt }}
93
58
94
59
# Run unit tests in whole Rust workspace
95
60
rs-test *flags :
96
- {{ _cargo-test }} --frozen --workspace \
97
- {{ if rs-build-type == "release" { "--release" } else { "" } }} \
98
- {{ flags }}
61
+ {{ _cargo-test }} {{ _cargo-build-flags }} --workspace {{ flags }}
99
62
100
63
# Check a specific Rust crate
101
64
rs-check-dir dir *flags :
102
65
cd {{ dir }} \
103
- && {{ _cargo }} check --frozen \
104
- {{ if rs-build-type == "release" { "--release" } else { "" } }} \
105
- {{ flags }} \
106
- {{ _cargo-fmt }}
66
+ && {{ _cargo }} check {{ _cargo-build-flags }} {{ flags }} {{ _cargo-fmt }}
67
+
68
+ _cargo-build-flags := "--frozen" + if rs-build-type == "release" { " --release" } else { "" }
107
69
108
70
# If recipe is run in github actions (and cargo-action-fmt is installed), then add a
109
71
# command suffix that formats errors
@@ -115,10 +77,10 @@ _cargo-fmt := if env_var_or_default("GITHUB_ACTIONS", "") != "true" { "" } else
115
77
```
116
78
}
117
79
118
- # When available, use cargo-nextest to run Rust tests; if the binary is not available,
119
- # use default test runner
80
+ # Use cargo-nextest to run Rust tests if available locally. We use the default
81
+ # runner in CI.
120
82
_cargo-test := _cargo + `` `
121
- if command -v cargo-nextest > /dev/null 2>&1 ; then
83
+ if [ " ${GITHUB_ACTIONS :- } " != " true " ] && command -v cargo-nextest > /dev/null 2>&1 ; then
122
84
echo " nextest run"
123
85
else
124
86
echo " test"
@@ -129,18 +91,8 @@ _cargo-test := _cargo + ```
129
91
# # validator
130
92
# #
131
93
132
- # Build validator code
133
- validator-build *flags :
134
- {{ _cargo }} build --workspace -p linkerd-network-validator \
135
- --target ={{ _cargo-target }} \
136
- {{ if rs-build-type == "release" { "--release" } else { "" } }} \
137
- {{ flags }}
138
-
139
- validator-package : rs-fetch validator-build
140
- @-mkdir -p target/package
141
- cp {{ _validator-bin }} target/package/{{ _validator-package-name }}
142
- {{ _strip }} target/package/{{ _validator-package-name }}
143
- {{ _shasum }} target/package/{{ _validator-package-name }} >target/package/{{ _validator-package-name }}.shasum
94
+ validator *args :
95
+ {{ just_executable() }} --justfile=validator/.justfile {{ args }}
144
96
145
97
# #
146
98
# # proxy-init
@@ -172,7 +124,7 @@ proxy-init-image:
172
124
docker buildx build . \
173
125
--tag ={{ _image }} \
174
126
--platform={{ docker-arch }} \
175
- --load \
127
+ --load
176
128
177
129
# Build docker image for iptables-tester (Development)
178
130
proxy-init-test-image :
@@ -287,25 +239,3 @@ sh-lint:
287
239
done < <(find . -type f ! \( -path ./.git/\* -or -path \*/target/\* \ ) ) | xargs)
288
240
echo "shellcheck $files" >&2
289
241
shellcheck $files
290
-
291
- # Prune Docker BuildKit cache (in CI)
292
- action-prune-docker :
293
- # !/usr/bin/env bash
294
- set -euxo pipefail
295
- # Delete all files under the buildkit blob directory that are not referred
296
- # to any longer in the cache manifest file
297
- manifest_sha =$(jq -r .manifests[0].digest < "$RUNNER_TEMP/.buildx-cache/index.json" )
298
- manifest =${manifest_sha# "sha256:"}
299
- files=("$manifest")
300
- while IFS= read -r f; do
301
- files+ =("$f")
302
- done < <(jq -r '.manifests[].digest | sub("^sha256 :"; "")' < "$RUNNER_TEMP/.buildx-cache/blobs/sha256/$manifest")
303
- for file in "$RUNNER_TEMP"/.buildx-cache/blobs/sha256/*; do
304
- for name in "${files[@]}"; do
305
- if [[ "${file# #*/}" == "$name" ]]; then
306
- rm -f "$file"
307
- echo "deleted : $name"
308
- break;
309
- fi
310
- done
311
- done
0 commit comments