1# Generated from xtask::workflows::run_tests
2# Rebuild with `cargo xtask workflows`.
3name: run_tests
4env:
5 CARGO_TERM_COLOR: always
6 RUST_BACKTRACE: '1'
7 CARGO_INCREMENTAL: '0'
8on:
9 pull_request:
10 branches:
11 - '**'
12 push:
13 branches:
14 - main
15 - v[0-9]+.[0-9]+.x
16jobs:
17 orchestrate:
18 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
19 runs-on: namespace-profile-2x4-ubuntu-2404
20 steps:
21 - name: steps::checkout_repo
22 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
23 with:
24 clean: false
25 fetch-depth: ${{ github.ref == 'refs/heads/main' && 2 || 350 }}
26 - id: filter
27 name: filter
28 run: |
29 if [ -z "$GITHUB_BASE_REF" ]; then
30 echo "Not in a PR context (i.e., push to main/stable/preview)"
31 COMPARE_REV="$(git rev-parse HEAD~1)"
32 else
33 echo "In a PR context comparing to pull_request.base.ref"
34 git fetch origin "$GITHUB_BASE_REF" --depth=350
35 COMPARE_REV="$(git merge-base "origin/${GITHUB_BASE_REF}" HEAD)"
36 fi
37 CHANGED_FILES="$(git diff --name-only "$COMPARE_REV" ${{ github.sha }})"
38
39 check_pattern() {
40 local output_name="$1"
41 local pattern="$2"
42 local grep_arg="$3"
43
44 echo "$CHANGED_FILES" | grep "$grep_arg" "$pattern" && \
45 echo "${output_name}=true" >> "$GITHUB_OUTPUT" || \
46 echo "${output_name}=false" >> "$GITHUB_OUTPUT"
47 }
48
49 # Check for changes that require full rebuild (no filter)
50 # Direct pushes to main/stable/preview always run full suite
51 if [ -z "$GITHUB_BASE_REF" ]; then
52 echo "Not a PR, running full test suite"
53 echo "changed_packages=" >> "$GITHUB_OUTPUT"
54 elif echo "$CHANGED_FILES" | grep -qP '^(rust-toolchain\.toml|\.cargo/|\.github/|Cargo\.(toml|lock)$)'; then
55 echo "Toolchain, cargo config, or root Cargo files changed, will run all tests"
56 echo "changed_packages=" >> "$GITHUB_OUTPUT"
57 else
58 # Extract changed directories from file paths
59 CHANGED_DIRS=$(echo "$CHANGED_FILES" | \
60 grep -oP '^(crates|tooling)/\K[^/]+' | \
61 sort -u || true)
62
63 # Build directory-to-package mapping using cargo metadata
64 DIR_TO_PKG=$(cargo metadata --format-version=1 --no-deps 2>/dev/null | \
65 jq -r '.packages[] | select(.manifest_path | test("crates/|tooling/")) | "\(.manifest_path | capture("(crates|tooling)/(?<dir>[^/]+)") | .dir)=\(.name)"')
66
67 # Map directory names to package names
68 FILE_CHANGED_PKGS=""
69 for dir in $CHANGED_DIRS; do
70 pkg=$(echo "$DIR_TO_PKG" | grep "^${dir}=" | cut -d= -f2 | head -1)
71 if [ -n "$pkg" ]; then
72 FILE_CHANGED_PKGS=$(printf '%s\n%s' "$FILE_CHANGED_PKGS" "$pkg")
73 else
74 # Fall back to directory name if no mapping found
75 FILE_CHANGED_PKGS=$(printf '%s\n%s' "$FILE_CHANGED_PKGS" "$dir")
76 fi
77 done
78 FILE_CHANGED_PKGS=$(echo "$FILE_CHANGED_PKGS" | grep -v '^$' | sort -u || true)
79
80 # If assets/ changed, add crates that depend on those assets
81 if echo "$CHANGED_FILES" | grep -qP '^assets/'; then
82 FILE_CHANGED_PKGS=$(printf '%s\n%s\n%s\n%s' "$FILE_CHANGED_PKGS" "settings" "storybook" "assets" | sort -u)
83 fi
84
85 # Combine all changed packages
86 ALL_CHANGED_PKGS=$(echo "$FILE_CHANGED_PKGS" | grep -v '^$' || true)
87
88 if [ -z "$ALL_CHANGED_PKGS" ]; then
89 echo "No package changes detected, will run all tests"
90 echo "changed_packages=" >> "$GITHUB_OUTPUT"
91 else
92 # Build nextest filterset with rdeps for each package
93 FILTERSET=$(echo "$ALL_CHANGED_PKGS" | \
94 sed 's/.*/rdeps(&)/' | \
95 tr '\n' '|' | \
96 sed 's/|$//')
97 echo "Changed packages filterset: $FILTERSET"
98 echo "changed_packages=$FILTERSET" >> "$GITHUB_OUTPUT"
99 fi
100 fi
101
102 check_pattern "run_action_checks" '^\.github/(workflows/|actions/|actionlint.yml)|tooling/xtask|script/' -qP
103 check_pattern "run_docs" '^(docs/|crates/.*\.rs)' -qP
104 check_pattern "run_licenses" '^(Cargo.lock|script/.*licenses)' -qP
105 check_pattern "run_tests" '^(docs/|script/update_top_ranking_issues/|\.github/(ISSUE_TEMPLATE|workflows/(?!run_tests)))' -qvP
106 outputs:
107 changed_packages: ${{ steps.filter.outputs.changed_packages }}
108 run_action_checks: ${{ steps.filter.outputs.run_action_checks }}
109 run_docs: ${{ steps.filter.outputs.run_docs }}
110 run_licenses: ${{ steps.filter.outputs.run_licenses }}
111 run_tests: ${{ steps.filter.outputs.run_tests }}
112 check_style:
113 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions')
114 runs-on: namespace-profile-4x8-ubuntu-2204
115 steps:
116 - name: steps::checkout_repo
117 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
118 with:
119 clean: false
120 - name: steps::cache_rust_dependencies_namespace
121 uses: namespacelabs/nscloud-cache-action@v1
122 with:
123 cache: rust
124 path: ~/.rustup
125 - name: steps::setup_pnpm
126 uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
127 with:
128 version: '9'
129 - name: steps::prettier
130 run: ./script/prettier
131 - name: steps::cargo_fmt
132 run: cargo fmt --all -- --check
133 - name: ./script/check-todos
134 run: ./script/check-todos
135 - name: ./script/check-keymaps
136 run: ./script/check-keymaps
137 - name: run_tests::check_style::check_for_typos
138 uses: crate-ci/typos@2d0ce569feab1f8752f1dde43cc2f2aa53236e06
139 with:
140 config: ./typos.toml
141 timeout-minutes: 60
142 clippy_windows:
143 needs:
144 - orchestrate
145 if: needs.orchestrate.outputs.run_tests == 'true'
146 runs-on: self-32vcpu-windows-2022
147 steps:
148 - name: steps::checkout_repo
149 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
150 with:
151 clean: false
152 - name: steps::setup_cargo_config
153 run: |
154 New-Item -ItemType Directory -Path "./../.cargo" -Force
155 Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
156 shell: pwsh
157 - name: steps::clippy
158 run: ./script/clippy.ps1
159 shell: pwsh
160 timeout-minutes: 60
161 clippy_linux:
162 needs:
163 - orchestrate
164 if: needs.orchestrate.outputs.run_tests == 'true'
165 runs-on: namespace-profile-16x32-ubuntu-2204
166 steps:
167 - name: steps::checkout_repo
168 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
169 with:
170 clean: false
171 - name: steps::setup_cargo_config
172 run: |
173 mkdir -p ./../.cargo
174 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
175 - name: steps::cache_rust_dependencies_namespace
176 uses: namespacelabs/nscloud-cache-action@v1
177 with:
178 cache: rust
179 path: ~/.rustup
180 - name: steps::setup_linux
181 run: ./script/linux
182 - name: steps::install_mold
183 run: ./script/install-mold
184 - name: steps::download_wasi_sdk
185 run: ./script/download-wasi-sdk
186 - name: steps::clippy
187 run: ./script/clippy
188 timeout-minutes: 60
189 clippy_mac:
190 needs:
191 - orchestrate
192 if: needs.orchestrate.outputs.run_tests == 'true'
193 runs-on: namespace-profile-mac-large
194 steps:
195 - name: steps::checkout_repo
196 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
197 with:
198 clean: false
199 - name: steps::setup_cargo_config
200 run: |
201 mkdir -p ./../.cargo
202 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
203 - name: steps::cache_rust_dependencies_namespace
204 uses: namespacelabs/nscloud-cache-action@v1
205 with:
206 cache: rust
207 path: ~/.rustup
208 - name: steps::clippy
209 run: ./script/clippy
210 timeout-minutes: 60
211 run_tests_windows:
212 needs:
213 - orchestrate
214 if: needs.orchestrate.outputs.run_tests == 'true'
215 runs-on: self-32vcpu-windows-2022
216 steps:
217 - name: steps::checkout_repo
218 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
219 with:
220 clean: false
221 - name: steps::setup_cargo_config
222 run: |
223 New-Item -ItemType Directory -Path "./../.cargo" -Force
224 Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
225 shell: pwsh
226 - name: steps::setup_node
227 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
228 with:
229 node-version: '20'
230 - name: steps::clear_target_dir_if_large
231 run: ./script/clear-target-dir-if-larger-than.ps1 250
232 shell: pwsh
233 - name: steps::cargo_nextest
234 run: cargo nextest run --workspace --no-fail-fast${{ needs.orchestrate.outputs.changed_packages && format(' -E "{0}"', needs.orchestrate.outputs.changed_packages) || '' }}
235 shell: pwsh
236 - name: steps::cleanup_cargo_config
237 if: always()
238 run: |
239 Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
240 shell: pwsh
241 timeout-minutes: 60
242 run_tests_linux:
243 needs:
244 - orchestrate
245 if: needs.orchestrate.outputs.run_tests == 'true'
246 runs-on: namespace-profile-16x32-ubuntu-2204
247 steps:
248 - name: steps::checkout_repo
249 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
250 with:
251 clean: false
252 - name: steps::setup_cargo_config
253 run: |
254 mkdir -p ./../.cargo
255 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
256 - name: steps::cache_rust_dependencies_namespace
257 uses: namespacelabs/nscloud-cache-action@v1
258 with:
259 cache: rust
260 path: ~/.rustup
261 - name: steps::setup_linux
262 run: ./script/linux
263 - name: steps::install_mold
264 run: ./script/install-mold
265 - name: steps::download_wasi_sdk
266 run: ./script/download-wasi-sdk
267 - name: steps::setup_node
268 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
269 with:
270 node-version: '20'
271 - name: steps::cargo_install_nextest
272 uses: taiki-e/install-action@nextest
273 - name: steps::clear_target_dir_if_large
274 run: ./script/clear-target-dir-if-larger-than 250
275 - name: steps::cargo_nextest
276 run: cargo nextest run --workspace --no-fail-fast${{ needs.orchestrate.outputs.changed_packages && format(' -E "{0}"', needs.orchestrate.outputs.changed_packages) || '' }}
277 - name: steps::cleanup_cargo_config
278 if: always()
279 run: |
280 rm -rf ./../.cargo
281 timeout-minutes: 60
282 services:
283 postgres:
284 image: postgres:15
285 env:
286 POSTGRES_HOST_AUTH_METHOD: trust
287 ports:
288 - 5432:5432
289 options: --health-cmd pg_isready --health-interval 500ms --health-timeout 5s --health-retries 10
290 run_tests_mac:
291 needs:
292 - orchestrate
293 if: needs.orchestrate.outputs.run_tests == 'true'
294 runs-on: namespace-profile-mac-large
295 steps:
296 - name: steps::checkout_repo
297 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
298 with:
299 clean: false
300 - name: steps::setup_cargo_config
301 run: |
302 mkdir -p ./../.cargo
303 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
304 - name: steps::cache_rust_dependencies_namespace
305 uses: namespacelabs/nscloud-cache-action@v1
306 with:
307 cache: rust
308 path: ~/.rustup
309 - name: steps::setup_node
310 uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
311 with:
312 node-version: '20'
313 - name: steps::cargo_install_nextest
314 uses: taiki-e/install-action@nextest
315 - name: steps::clear_target_dir_if_large
316 run: ./script/clear-target-dir-if-larger-than 300
317 - name: steps::cargo_nextest
318 run: cargo nextest run --workspace --no-fail-fast${{ needs.orchestrate.outputs.changed_packages && format(' -E "{0}"', needs.orchestrate.outputs.changed_packages) || '' }}
319 - name: steps::cleanup_cargo_config
320 if: always()
321 run: |
322 rm -rf ./../.cargo
323 timeout-minutes: 60
324 doctests:
325 needs:
326 - orchestrate
327 if: needs.orchestrate.outputs.run_tests == 'true'
328 runs-on: namespace-profile-16x32-ubuntu-2204
329 steps:
330 - name: steps::checkout_repo
331 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
332 with:
333 clean: false
334 - name: steps::cache_rust_dependencies_namespace
335 uses: namespacelabs/nscloud-cache-action@v1
336 with:
337 cache: rust
338 path: ~/.rustup
339 - name: steps::setup_linux
340 run: ./script/linux
341 - name: steps::install_mold
342 run: ./script/install-mold
343 - name: steps::download_wasi_sdk
344 run: ./script/download-wasi-sdk
345 - name: steps::setup_cargo_config
346 run: |
347 mkdir -p ./../.cargo
348 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
349 - id: run_doctests
350 name: run_tests::doctests::run_doctests
351 run: |
352 cargo test --workspace --doc --no-fail-fast
353 - name: steps::cleanup_cargo_config
354 if: always()
355 run: |
356 rm -rf ./../.cargo
357 timeout-minutes: 60
358 check_workspace_binaries:
359 needs:
360 - orchestrate
361 if: needs.orchestrate.outputs.run_tests == 'true'
362 runs-on: namespace-profile-8x16-ubuntu-2204
363 steps:
364 - name: steps::checkout_repo
365 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
366 with:
367 clean: false
368 - name: steps::setup_cargo_config
369 run: |
370 mkdir -p ./../.cargo
371 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
372 - name: steps::cache_rust_dependencies_namespace
373 uses: namespacelabs/nscloud-cache-action@v1
374 with:
375 cache: rust
376 path: ~/.rustup
377 - name: steps::setup_linux
378 run: ./script/linux
379 - name: steps::install_mold
380 run: ./script/install-mold
381 - name: steps::download_wasi_sdk
382 run: ./script/download-wasi-sdk
383 - name: cargo build -p collab
384 run: cargo build -p collab
385 - name: cargo build --workspace --bins --examples
386 run: cargo build --workspace --bins --examples
387 - name: steps::cleanup_cargo_config
388 if: always()
389 run: |
390 rm -rf ./../.cargo
391 timeout-minutes: 60
392 check_dependencies:
393 needs:
394 - orchestrate
395 if: needs.orchestrate.outputs.run_tests == 'true'
396 runs-on: namespace-profile-2x4-ubuntu-2404
397 steps:
398 - name: steps::checkout_repo
399 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
400 with:
401 clean: false
402 - name: steps::cache_rust_dependencies_namespace
403 uses: namespacelabs/nscloud-cache-action@v1
404 with:
405 cache: rust
406 path: ~/.rustup
407 - name: run_tests::check_dependencies::install_cargo_machete
408 uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
409 with:
410 command: install
411 args: cargo-machete@0.7.0
412 - name: run_tests::check_dependencies::run_cargo_machete
413 uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
414 with:
415 command: machete
416 - name: run_tests::check_dependencies::check_cargo_lock
417 run: cargo update --locked --workspace
418 - name: run_tests::check_dependencies::check_vulnerable_dependencies
419 if: github.event_name == 'pull_request'
420 uses: actions/dependency-review-action@67d4f4bd7a9b17a0db54d2a7519187c65e339de8
421 with:
422 license-check: false
423 timeout-minutes: 60
424 check_docs:
425 needs:
426 - orchestrate
427 if: needs.orchestrate.outputs.run_docs == 'true'
428 runs-on: namespace-profile-8x16-ubuntu-2204
429 steps:
430 - name: steps::checkout_repo
431 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
432 with:
433 clean: false
434 - name: steps::setup_cargo_config
435 run: |
436 mkdir -p ./../.cargo
437 cp ./.cargo/ci-config.toml ./../.cargo/config.toml
438 - name: steps::cache_rust_dependencies_namespace
439 uses: namespacelabs/nscloud-cache-action@v1
440 with:
441 cache: rust
442 path: ~/.rustup
443 - name: run_tests::check_docs::lychee_link_check
444 uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
445 with:
446 args: --no-progress --exclude '^http' './docs/src/**/*'
447 fail: true
448 jobSummary: false
449 - name: steps::setup_linux
450 run: ./script/linux
451 - name: steps::install_mold
452 run: ./script/install-mold
453 - name: steps::download_wasi_sdk
454 run: ./script/download-wasi-sdk
455 - name: ./script/generate-action-metadata
456 run: ./script/generate-action-metadata
457 - name: run_tests::check_docs::install_mdbook
458 uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08
459 with:
460 mdbook-version: 0.4.37
461 - name: run_tests::check_docs::build_docs
462 run: |
463 mkdir -p target/deploy
464 mdbook build ./docs --dest-dir=../target/deploy/docs/
465 - name: run_tests::check_docs::lychee_link_check
466 uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
467 with:
468 args: --no-progress --exclude '^http' 'target/deploy/docs'
469 fail: true
470 jobSummary: false
471 timeout-minutes: 60
472 check_licenses:
473 needs:
474 - orchestrate
475 if: needs.orchestrate.outputs.run_licenses == 'true'
476 runs-on: namespace-profile-2x4-ubuntu-2404
477 steps:
478 - name: steps::checkout_repo
479 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
480 with:
481 clean: false
482 - name: steps::cache_rust_dependencies_namespace
483 uses: namespacelabs/nscloud-cache-action@v1
484 with:
485 cache: rust
486 path: ~/.rustup
487 - name: ./script/check-licenses
488 run: ./script/check-licenses
489 - name: ./script/generate-licenses
490 run: ./script/generate-licenses
491 check_scripts:
492 needs:
493 - orchestrate
494 if: needs.orchestrate.outputs.run_action_checks == 'true'
495 runs-on: namespace-profile-2x4-ubuntu-2404
496 steps:
497 - name: steps::checkout_repo
498 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
499 with:
500 clean: false
501 - name: run_tests::check_scripts::run_shellcheck
502 run: ./script/shellcheck-scripts error
503 - id: get_actionlint
504 name: run_tests::check_scripts::download_actionlint
505 run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
506 - name: run_tests::check_scripts::run_actionlint
507 run: |
508 ${{ steps.get_actionlint.outputs.executable }} -color
509 - name: run_tests::check_scripts::check_xtask_workflows
510 run: |
511 cargo xtask workflows
512 if ! git diff --exit-code .github; then
513 echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
514 echo "Please run 'cargo xtask workflows' locally and commit the changes"
515 exit 1
516 fi
517 timeout-minutes: 60
518 check_postgres_and_protobuf_migrations:
519 needs:
520 - orchestrate
521 if: needs.orchestrate.outputs.run_tests == 'true'
522 runs-on: namespace-profile-16x32-ubuntu-2204
523 env:
524 GIT_AUTHOR_NAME: Protobuf Action
525 GIT_AUTHOR_EMAIL: ci@zed.dev
526 GIT_COMMITTER_NAME: Protobuf Action
527 GIT_COMMITTER_EMAIL: ci@zed.dev
528 steps:
529 - name: steps::checkout_repo
530 uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
531 with:
532 fetch-depth: 0
533 - name: run_tests::check_postgres_and_protobuf_migrations::remove_untracked_files
534 run: git clean -df
535 - name: run_tests::check_postgres_and_protobuf_migrations::ensure_fresh_merge
536 run: |
537 if [ -z "$GITHUB_BASE_REF" ];
538 then
539 echo "BUF_BASE_BRANCH=$(git merge-base origin/main HEAD)" >> "$GITHUB_ENV"
540 else
541 git checkout -B temp
542 git merge -q "origin/$GITHUB_BASE_REF" -m "merge main into temp"
543 echo "BUF_BASE_BRANCH=$GITHUB_BASE_REF" >> "$GITHUB_ENV"
544 fi
545 - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_setup_action
546 uses: bufbuild/buf-setup-action@v1
547 with:
548 version: v1.29.0
549 github_token: ${{ secrets.GITHUB_TOKEN }}
550 - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_breaking_action
551 uses: bufbuild/buf-breaking-action@v1
552 with:
553 input: crates/proto/proto/
554 against: https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/
555 timeout-minutes: 60
556 tests_pass:
557 needs:
558 - orchestrate
559 - check_style
560 - clippy_windows
561 - clippy_linux
562 - clippy_mac
563 - run_tests_windows
564 - run_tests_linux
565 - run_tests_mac
566 - doctests
567 - check_workspace_binaries
568 - check_dependencies
569 - check_docs
570 - check_licenses
571 - check_scripts
572 if: (github.repository_owner == 'zed-industries' || github.repository_owner == 'zed-extensions') && always()
573 runs-on: namespace-profile-2x4-ubuntu-2404
574 steps:
575 - name: run_tests::tests_pass
576 run: |
577 set +x
578 EXIT_CODE=0
579
580 check_result() {
581 echo "* $1: $2"
582 if [[ "$2" != "skipped" && "$2" != "success" ]]; then EXIT_CODE=1; fi
583 }
584
585 check_result "orchestrate" "${{ needs.orchestrate.result }}"
586 check_result "check_style" "${{ needs.check_style.result }}"
587 check_result "clippy_windows" "${{ needs.clippy_windows.result }}"
588 check_result "clippy_linux" "${{ needs.clippy_linux.result }}"
589 check_result "clippy_mac" "${{ needs.clippy_mac.result }}"
590 check_result "run_tests_windows" "${{ needs.run_tests_windows.result }}"
591 check_result "run_tests_linux" "${{ needs.run_tests_linux.result }}"
592 check_result "run_tests_mac" "${{ needs.run_tests_mac.result }}"
593 check_result "doctests" "${{ needs.doctests.result }}"
594 check_result "check_workspace_binaries" "${{ needs.check_workspace_binaries.result }}"
595 check_result "check_dependencies" "${{ needs.check_dependencies.result }}"
596 check_result "check_docs" "${{ needs.check_docs.result }}"
597 check_result "check_licenses" "${{ needs.check_licenses.result }}"
598 check_result "check_scripts" "${{ needs.check_scripts.result }}"
599
600 exit $EXIT_CODE
601concurrency:
602 group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
603 cancel-in-progress: true
604defaults:
605 run:
606 shell: bash -euxo pipefail {0}