run_tests.yml

  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'
 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_pattern "run_action_checks" '^\.github/(workflows/|actions/|actionlint.yml)|tooling/xtask|script/' -qP
 50        check_pattern "run_docs" '^docs/' -qP
 51        check_pattern "run_licenses" '^(Cargo.lock|script/.*licenses)' -qP
 52        check_pattern "run_nix" '^(nix/|flake\.|Cargo\.|rust-toolchain.toml|\.cargo/config.toml)' -qP
 53        check_pattern "run_tests" '^(docs/|script/update_top_ranking_issues/|\.github/(ISSUE_TEMPLATE|workflows/(?!run_tests)))' -qvP
 54      shell: bash -euxo pipefail {0}
 55    outputs:
 56      run_action_checks: ${{ steps.filter.outputs.run_action_checks }}
 57      run_docs: ${{ steps.filter.outputs.run_docs }}
 58      run_licenses: ${{ steps.filter.outputs.run_licenses }}
 59      run_nix: ${{ steps.filter.outputs.run_nix }}
 60      run_tests: ${{ steps.filter.outputs.run_tests }}
 61  check_style:
 62    if: github.repository_owner == 'zed-industries'
 63    runs-on: namespace-profile-4x8-ubuntu-2204
 64    steps:
 65    - name: steps::cache_rust_dependencies_namespace
 66      uses: namespacelabs/rust-cache@nscloud-cache-action
 67      with:
 68        save-if: ${{ github.ref == 'refs/heads/main' }}
 69        cache: rust
 70        path: |-
 71          /home/runner/.cargo/bin/cargo-nextest
 72          /home/runner/.cargo/bin/cargo-about
 73    - name: steps::checkout_repo
 74      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
 75      with:
 76        clean: false
 77    - name: steps::setup_pnpm
 78      uses: pnpm/action-setup@fe02b34f77f8bc703788d5817da081398fad5dd2
 79      with:
 80        version: '9'
 81    - name: ./script/prettier
 82      run: ./script/prettier
 83      shell: bash -euxo pipefail {0}
 84    - name: ./script/check-todos
 85      run: ./script/check-todos
 86      shell: bash -euxo pipefail {0}
 87    - name: ./script/check-keymaps
 88      run: ./script/check-keymaps
 89      shell: bash -euxo pipefail {0}
 90    - name: run_tests::check_style::check_for_typos
 91      uses: crate-ci/typos@80c8a4945eec0f6d464eaf9e65ed98ef085283d1
 92      with:
 93        config: ./typos.toml
 94    - name: steps::cargo_fmt
 95      run: cargo fmt --all -- --check
 96      shell: bash -euxo pipefail {0}
 97    timeout-minutes: 60
 98  run_tests_windows:
 99    needs:
100    - orchestrate
101    if: needs.orchestrate.outputs.run_tests == 'true'
102    runs-on: self-32vcpu-windows-2022
103    steps:
104    - name: steps::checkout_repo
105      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
106      with:
107        clean: false
108    - name: steps::setup_cargo_config
109      run: |
110        New-Item -ItemType Directory -Path "./../.cargo" -Force
111        Copy-Item -Path "./.cargo/ci-config.toml" -Destination "./../.cargo/config.toml"
112      shell: pwsh
113    - name: steps::setup_node
114      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
115      with:
116        node-version: '20'
117    - name: steps::clippy
118      run: ./script/clippy.ps1
119      shell: pwsh
120    - name: steps::cargo_install_nextest
121      run: cargo install cargo-nextest --locked
122      shell: pwsh
123    - name: steps::clear_target_dir_if_large
124      run: ./script/clear-target-dir-if-larger-than.ps1 250
125      shell: pwsh
126    - name: steps::cargo_nextest
127      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
128      shell: pwsh
129    - name: steps::cleanup_cargo_config
130      if: always()
131      run: |
132        Remove-Item -Recurse -Path "./../.cargo" -Force -ErrorAction SilentlyContinue
133      shell: pwsh
134    timeout-minutes: 60
135  run_tests_linux:
136    needs:
137    - orchestrate
138    if: needs.orchestrate.outputs.run_tests == 'true'
139    runs-on: namespace-profile-16x32-ubuntu-2204
140    steps:
141    - name: steps::checkout_repo
142      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
143      with:
144        clean: false
145    - name: steps::setup_cargo_config
146      run: |
147        mkdir -p ./../.cargo
148        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
149      shell: bash -euxo pipefail {0}
150    - name: steps::setup_linux
151      run: ./script/linux
152      shell: bash -euxo pipefail {0}
153    - name: steps::install_mold
154      run: ./script/install-mold
155      shell: bash -euxo pipefail {0}
156    - name: steps::cache_rust_dependencies_namespace
157      uses: namespacelabs/rust-cache@nscloud-cache-action
158      with:
159        save-if: ${{ github.ref == 'refs/heads/main' }}
160        cache: rust
161        path: |-
162          /home/runner/.cargo/bin/cargo-nextest
163          /home/runner/.cargo/bin/cargo-about
164    - name: steps::setup_node
165      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
166      with:
167        node-version: '20'
168    - name: steps::clippy
169      run: ./script/clippy
170      shell: bash -euxo pipefail {0}
171    - name: steps::cargo_install_nextest
172      run: cargo install cargo-nextest --locked
173      shell: bash -euxo pipefail {0}
174    - name: steps::clear_target_dir_if_large
175      run: ./script/clear-target-dir-if-larger-than 100
176      shell: bash -euxo pipefail {0}
177    - name: steps::cargo_nextest
178      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
179      shell: bash -euxo pipefail {0}
180    - name: steps::cleanup_cargo_config
181      if: always()
182      run: |
183        rm -rf ./../.cargo
184      shell: bash -euxo pipefail {0}
185    timeout-minutes: 60
186  run_tests_mac:
187    needs:
188    - orchestrate
189    if: needs.orchestrate.outputs.run_tests == 'true'
190    runs-on: self-mini-macos
191    steps:
192    - name: steps::checkout_repo
193      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
194      with:
195        clean: false
196    - name: steps::setup_cargo_config
197      run: |
198        mkdir -p ./../.cargo
199        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
200      shell: bash -euxo pipefail {0}
201    - name: steps::setup_node
202      uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020
203      with:
204        node-version: '20'
205    - name: steps::clippy
206      run: ./script/clippy
207      shell: bash -euxo pipefail {0}
208    - name: steps::cargo_install_nextest
209      run: cargo install cargo-nextest --locked
210      shell: bash -euxo pipefail {0}
211    - name: steps::clear_target_dir_if_large
212      run: ./script/clear-target-dir-if-larger-than 300
213      shell: bash -euxo pipefail {0}
214    - name: steps::cargo_nextest
215      run: cargo nextest run --workspace --no-fail-fast --failure-output immediate-final
216      shell: bash -euxo pipefail {0}
217    - name: steps::cleanup_cargo_config
218      if: always()
219      run: |
220        rm -rf ./../.cargo
221      shell: bash -euxo pipefail {0}
222    timeout-minutes: 60
223  doctests:
224    needs:
225    - orchestrate
226    if: needs.orchestrate.outputs.run_tests == 'true'
227    runs-on: namespace-profile-16x32-ubuntu-2204
228    steps:
229    - name: steps::checkout_repo
230      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
231      with:
232        clean: false
233    - name: steps::cache_rust_dependencies_namespace
234      uses: namespacelabs/rust-cache@nscloud-cache-action
235      with:
236        save-if: ${{ github.ref == 'refs/heads/main' }}
237        cache: rust
238        path: |-
239          /home/runner/.cargo/bin/cargo-nextest
240          /home/runner/.cargo/bin/cargo-about
241    - name: steps::setup_linux
242      run: ./script/linux
243      shell: bash -euxo pipefail {0}
244    - name: steps::install_mold
245      run: ./script/install-mold
246      shell: bash -euxo pipefail {0}
247    - name: steps::setup_cargo_config
248      run: |
249        mkdir -p ./../.cargo
250        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
251      shell: bash -euxo pipefail {0}
252    - id: run_doctests
253      name: run_tests::doctests::run_doctests
254      run: |
255        cargo test --workspace --doc --no-fail-fast
256      shell: bash -euxo pipefail {0}
257    - name: steps::cleanup_cargo_config
258      if: always()
259      run: |
260        rm -rf ./../.cargo
261      shell: bash -euxo pipefail {0}
262    timeout-minutes: 60
263  check_workspace_binaries:
264    needs:
265    - orchestrate
266    if: needs.orchestrate.outputs.run_tests == 'true'
267    runs-on: namespace-profile-8x16-ubuntu-2204
268    steps:
269    - name: steps::checkout_repo
270      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
271      with:
272        clean: false
273    - name: steps::setup_cargo_config
274      run: |
275        mkdir -p ./../.cargo
276        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
277      shell: bash -euxo pipefail {0}
278    - name: steps::setup_linux
279      run: ./script/linux
280      shell: bash -euxo pipefail {0}
281    - name: steps::install_mold
282      run: ./script/install-mold
283      shell: bash -euxo pipefail {0}
284    - name: steps::cache_rust_dependencies_namespace
285      uses: namespacelabs/rust-cache@nscloud-cache-action
286      with:
287        save-if: ${{ github.ref == 'refs/heads/main' }}
288        cache: rust
289        path: |-
290          /home/runner/.cargo/bin/cargo-nextest
291          /home/runner/.cargo/bin/cargo-about
292    - name: cargo build -p collab
293      run: cargo build -p collab
294      shell: bash -euxo pipefail {0}
295    - name: cargo build --workspace --bins --examples
296      run: cargo build --workspace --bins --examples
297      shell: bash -euxo pipefail {0}
298    - name: steps::cleanup_cargo_config
299      if: always()
300      run: |
301        rm -rf ./../.cargo
302      shell: bash -euxo pipefail {0}
303    timeout-minutes: 60
304  check_postgres_and_protobuf_migrations:
305    needs:
306    - orchestrate
307    if: needs.orchestrate.outputs.run_tests == 'true'
308    runs-on: self-mini-macos
309    steps:
310    - name: steps::checkout_repo
311      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
312      with:
313        fetch-depth: 0
314    - name: run_tests::check_postgres_and_protobuf_migrations::remove_untracked_files
315      run: git clean -df
316      shell: bash -euxo pipefail {0}
317    - name: run_tests::check_postgres_and_protobuf_migrations::ensure_fresh_merge
318      run: |
319        if [ -z "$GITHUB_BASE_REF" ];
320        then
321          echo "BUF_BASE_BRANCH=$(git merge-base origin/main HEAD)" >> "$GITHUB_ENV"
322        else
323          git checkout -B temp
324          git merge -q "origin/$GITHUB_BASE_REF" -m "merge main into temp"
325          echo "BUF_BASE_BRANCH=$GITHUB_BASE_REF" >> "$GITHUB_ENV"
326        fi
327      shell: bash -euxo pipefail {0}
328    - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_setup_action
329      uses: bufbuild/buf-setup-action@v1
330      with:
331        version: v1.29.0
332    - name: run_tests::check_postgres_and_protobuf_migrations::bufbuild_breaking_action
333      uses: bufbuild/buf-breaking-action@v1
334      with:
335        input: crates/proto/proto/
336        against: https://github.com/${GITHUB_REPOSITORY}.git#branch=${BUF_BASE_BRANCH},subdir=crates/proto/proto/
337    timeout-minutes: 60
338  check_dependencies:
339    needs:
340    - orchestrate
341    if: needs.orchestrate.outputs.run_tests == 'true'
342    runs-on: namespace-profile-2x4-ubuntu-2404
343    steps:
344    - name: steps::checkout_repo
345      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
346      with:
347        clean: false
348    - name: steps::cache_rust_dependencies_namespace
349      uses: namespacelabs/rust-cache@nscloud-cache-action
350      with:
351        save-if: ${{ github.ref == 'refs/heads/main' }}
352        cache: rust
353        path: |-
354          /home/runner/.cargo/bin/cargo-nextest
355          /home/runner/.cargo/bin/cargo-about
356    - name: run_tests::check_dependencies::install_cargo_machete
357      uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
358      with:
359        command: install
360        args: cargo-machete@0.7.0
361    - name: run_tests::check_dependencies::run_cargo_machete
362      uses: clechasseur/rs-cargo@8435b10f6e71c2e3d4d3b7573003a8ce4bfc6386
363      with:
364        command: machete
365    - name: run_tests::check_dependencies::check_cargo_lock
366      run: cargo update --locked --workspace
367      shell: bash -euxo pipefail {0}
368    - name: run_tests::check_dependencies::check_vulnerable_dependencies
369      if: github.event_name == 'pull_request'
370      uses: actions/dependency-review-action@67d4f4bd7a9b17a0db54d2a7519187c65e339de8
371      with:
372        license-check: false
373    timeout-minutes: 60
374  check_docs:
375    needs:
376    - orchestrate
377    if: needs.orchestrate.outputs.run_docs == 'true'
378    runs-on: namespace-profile-8x16-ubuntu-2204
379    steps:
380    - name: steps::checkout_repo
381      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
382      with:
383        clean: false
384    - name: steps::setup_cargo_config
385      run: |
386        mkdir -p ./../.cargo
387        cp ./.cargo/ci-config.toml ./../.cargo/config.toml
388      shell: bash -euxo pipefail {0}
389    - name: steps::cache_rust_dependencies_namespace
390      uses: namespacelabs/rust-cache@nscloud-cache-action
391      with:
392        save-if: ${{ github.ref == 'refs/heads/main' }}
393        cache: rust
394        path: |-
395          /home/runner/.cargo/bin/cargo-nextest
396          /home/runner/.cargo/bin/cargo-about
397    - name: run_tests::check_docs::lychee_link_check
398      uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
399      with:
400        args: --no-progress --exclude '^http' './docs/src/**/*'
401        fail: true
402        jobSummary: false
403    - name: steps::setup_linux
404      run: ./script/linux
405      shell: bash -euxo pipefail {0}
406    - name: steps::install_mold
407      run: ./script/install-mold
408      shell: bash -euxo pipefail {0}
409    - name: run_tests::check_docs::install_mdbook
410      uses: peaceiris/actions-mdbook@ee69d230fe19748b7abf22df32acaa93833fad08
411      with:
412        mdbook-version: 0.4.37
413    - name: run_tests::check_docs::build_docs
414      run: |
415        mkdir -p target/deploy
416        mdbook build ./docs --dest-dir=../target/deploy/docs/
417      shell: bash -euxo pipefail {0}
418    - name: run_tests::check_docs::lychee_link_check
419      uses: lycheeverse/lychee-action@82202e5e9c2f4ef1a55a3d02563e1cb6041e5332
420      with:
421        args: --no-progress --exclude '^http' 'target/deploy/docs'
422        fail: true
423        jobSummary: false
424    timeout-minutes: 60
425  check_licenses:
426    needs:
427    - orchestrate
428    if: needs.orchestrate.outputs.run_licenses == 'true'
429    runs-on: namespace-profile-2x4-ubuntu-2404
430    steps:
431    - name: steps::checkout_repo
432      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
433      with:
434        clean: false
435    - name: steps::cache_rust_dependencies_namespace
436      uses: namespacelabs/rust-cache@nscloud-cache-action
437      with:
438        save-if: ${{ github.ref == 'refs/heads/main' }}
439        cache: rust
440        path: |-
441          /home/runner/.cargo/bin/cargo-nextest
442          /home/runner/.cargo/bin/cargo-about
443    - name: ./script/check-licenses
444      run: ./script/check-licenses
445      shell: bash -euxo pipefail {0}
446    - name: ./script/generate-licenses
447      run: ./script/generate-licenses
448      shell: bash -euxo pipefail {0}
449  check_scripts:
450    needs:
451    - orchestrate
452    if: needs.orchestrate.outputs.run_action_checks == 'true'
453    runs-on: namespace-profile-2x4-ubuntu-2404
454    steps:
455    - name: steps::checkout_repo
456      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
457      with:
458        clean: false
459    - name: run_tests::check_scripts::run_shellcheck
460      run: ./script/shellcheck-scripts error
461      shell: bash -euxo pipefail {0}
462    - id: get_actionlint
463      name: run_tests::check_scripts::download_actionlint
464      run: bash <(curl https://raw.githubusercontent.com/rhysd/actionlint/main/scripts/download-actionlint.bash)
465      shell: bash -euxo pipefail {0}
466    - name: run_tests::check_scripts::run_actionlint
467      run: |
468        ${{ steps.get_actionlint.outputs.executable }} -color
469      shell: bash -euxo pipefail {0}
470    - name: run_tests::check_scripts::check_xtask_workflows
471      run: |
472        cargo xtask workflows
473        if ! git diff --exit-code .github; then
474          echo "Error: .github directory has uncommitted changes after running 'cargo xtask workflows'"
475          echo "Please run 'cargo xtask workflows' locally and commit the changes"
476          exit 1
477        fi
478      shell: bash -euxo pipefail {0}
479    timeout-minutes: 60
480  build_nix_linux_x86_64:
481    needs:
482    - orchestrate
483    if: needs.orchestrate.outputs.run_nix == 'true'
484    runs-on: namespace-profile-32x64-ubuntu-2004
485    env:
486      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
487      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
488      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
489      GIT_LFS_SKIP_SMUDGE: '1'
490    steps:
491    - name: steps::checkout_repo
492      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
493      with:
494        clean: false
495    - name: nix_build::install_nix
496      uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f
497      with:
498        github_access_token: ${{ secrets.GITHUB_TOKEN }}
499    - name: nix_build::cachix_action
500      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
501      with:
502        name: zed
503        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
504        cachixArgs: -v
505        pushFilter: -zed-editor-[0-9.]*-nightly
506    - name: nix_build::build
507      run: nix build .#debug -L --accept-flake-config
508      shell: bash -euxo pipefail {0}
509    timeout-minutes: 60
510    continue-on-error: true
511  build_nix_mac_aarch64:
512    needs:
513    - orchestrate
514    if: needs.orchestrate.outputs.run_nix == 'true'
515    runs-on: self-mini-macos
516    env:
517      ZED_CLIENT_CHECKSUM_SEED: ${{ secrets.ZED_CLIENT_CHECKSUM_SEED }}
518      ZED_MINIDUMP_ENDPOINT: ${{ secrets.ZED_SENTRY_MINIDUMP_ENDPOINT }}
519      ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON: ${{ secrets.ZED_CLOUD_PROVIDER_ADDITIONAL_MODELS_JSON }}
520      GIT_LFS_SKIP_SMUDGE: '1'
521    steps:
522    - name: steps::checkout_repo
523      uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
524      with:
525        clean: false
526    - name: nix_build::set_path
527      run: |
528        echo "/nix/var/nix/profiles/default/bin" >> "$GITHUB_PATH"
529        echo "/Users/administrator/.nix-profile/bin" >> "$GITHUB_PATH"
530      shell: bash -euxo pipefail {0}
531    - name: nix_build::cachix_action
532      uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad
533      with:
534        name: zed
535        authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
536        cachixArgs: -v
537        pushFilter: -zed-editor-[0-9.]*-nightly
538    - name: nix_build::build
539      run: nix build .#debug -L --accept-flake-config
540      shell: bash -euxo pipefail {0}
541    - name: nix_build::limit_store
542      run: |-
543        if [ "$(du -sm /nix/store | cut -f1)" -gt 50000 ]; then
544            nix-collect-garbage -d || true
545        fi
546      shell: bash -euxo pipefail {0}
547    timeout-minutes: 60
548    continue-on-error: true
549  tests_pass:
550    needs:
551    - orchestrate
552    - check_style
553    - run_tests_windows
554    - run_tests_linux
555    - run_tests_mac
556    - doctests
557    - check_workspace_binaries
558    - check_postgres_and_protobuf_migrations
559    - check_dependencies
560    - check_docs
561    - check_licenses
562    - check_scripts
563    - build_nix_linux_x86_64
564    - build_nix_mac_aarch64
565    if: github.repository_owner == 'zed-industries' && always()
566    runs-on: namespace-profile-2x4-ubuntu-2404
567    steps:
568    - name: run_tests::tests_pass
569      run: |
570        set +x
571        EXIT_CODE=0
572
573        check_result() {
574          echo "* $1: $2"
575          if [[ "$2" != "skipped" && "$2" != "success" ]]; then EXIT_CODE=1; fi
576        }
577
578        check_result "orchestrate" "${{ needs.orchestrate.result }}"
579        check_result "check_style" "${{ needs.check_style.result }}"
580        check_result "run_tests_windows" "${{ needs.run_tests_windows.result }}"
581        check_result "run_tests_linux" "${{ needs.run_tests_linux.result }}"
582        check_result "run_tests_mac" "${{ needs.run_tests_mac.result }}"
583        check_result "doctests" "${{ needs.doctests.result }}"
584        check_result "check_workspace_binaries" "${{ needs.check_workspace_binaries.result }}"
585        check_result "check_postgres_and_protobuf_migrations" "${{ needs.check_postgres_and_protobuf_migrations.result }}"
586        check_result "check_dependencies" "${{ needs.check_dependencies.result }}"
587        check_result "check_docs" "${{ needs.check_docs.result }}"
588        check_result "check_licenses" "${{ needs.check_licenses.result }}"
589        check_result "check_scripts" "${{ needs.check_scripts.result }}"
590        check_result "build_nix_linux_x86_64" "${{ needs.build_nix_linux_x86_64.result }}"
591        check_result "build_nix_mac_aarch64" "${{ needs.build_nix_mac_aarch64.result }}"
592
593        exit $EXIT_CODE
594      shell: bash -euxo pipefail {0}
595concurrency:
596  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.ref_name == 'main' && github.sha || 'anysha' }}
597  cancel-in-progress: true