Skip to content

Memory measurement #9420

Memory measurement

Memory measurement #9420

Workflow file for this run

name: Rust-CI
permissions:
contents: read
on:
push:
branches:
- main
pull_request:
branches:
- main
merge_group:
env:
CARGO_TERM_COLOR: always
# Cancel in-progress runs on new commits to same PR
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test_and_coverage:
strategy:
fail-fast: false
matrix:
folder:
- otap-dataflow
- experimental/query_abstraction
- experimental/query_engine
os:
- ubuntu-latest
- ubuntu-24.04-arm
- windows-latest
- macos-latest
exclude:
- folder: otap-dataflow
os: ubuntu-latest
- folder: otap-dataflow
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
# running llvm codecov and building the collector etc. tend to create a lot of artifacts
# that will cause the job to run out of disk space. Here we delete some pre-installed
# packages from the runner that are not needed to free up space
- name: Free disk space (Linux)
if: runner.os == 'Linux'
run: |
echo "disk usage before"
df -h
# Remove Java (JDKs)
sudo rm -rf /usr/lib/jvm
# Remove .NET SDKs
sudo rm -rf /usr/share/dotnet
# Remove Swift toolchain
sudo rm -rf /usr/share/swift
# Remove Haskell (GHC)
sudo rm -rf /usr/local/.ghcup
# Remove Julia
sudo rm -rf /usr/local/julia*
# Remove Android SDKs
sudo rm -rf /usr/local/lib/android
# Remove Chromium (optional if not using for browser tests)
sudo rm -rf /usr/local/share/chromium
# Remove Microsoft/Edge and Google Chrome builds
sudo rm -rf /opt/microsoft /opt/google
# Remove Azure CLI
sudo rm -rf /opt/az
# Remove PowerShell
sudo rm -rf /usr/local/share/powershell
echo "disk usage after"
df -h
- name: Free disk space (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Write-Host "disk usage before"
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name='Used(GB)';Expression={[math]::Round($_.Used/1GB,2)}}, @{Name='Free(GB)';Expression={[math]::Round($_.Free/1GB,2)}}
# Remove unnecessary tools to free up space
if (Test-Path "C:\Android") { Remove-Item -Recurse -Force "C:\Android" }
if (Test-Path "C:\SeleniumWebDrivers") { Remove-Item -Recurse -Force "C:\SeleniumWebDrivers" }
if (Test-Path "C:\imagemagick") { Remove-Item -Recurse -Force "C:\imagemagick" }
Write-Host "disk usage after"
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name='Used(GB)';Expression={[math]::Round($_.Used/1GB,2)}}, @{Name='Free(GB)';Expression={[math]::Round($_.Free/1GB,2)}}
# macOS runners have sufficient disk space (~40GB available) for running tests without
# building the collector or running code coverage, so no cleanup is needed.
- name: install cargo-llvm-cov and nextest
uses: taiki-e/install-action@68675c5a5f1a6950c3975d33f3ae0ef155e5bf3d # v2.68.15
with:
tool: cargo-llvm-cov,cargo-nextest
# The collector is only built on Linux. Integration tests that require
# the collector are skipped on Windows via #[cfg(not(target_os = "windows"))].
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
if: runner.os == 'Linux'
with:
go-version: "1.26.0"
- name: Build the test collector
if: runner.os == 'Linux'
run: make otelarrowcol
- name: Run tests with coverage (Linux x86_64)
if: matrix.os == 'ubuntu-latest'
run: cargo llvm-cov nextest --all-features --workspace --lcov --output-path lcov.info
working-directory: ./rust/${{ matrix.folder }}
- name: Run tests (Linux ARM64)
if: matrix.os == 'ubuntu-24.04-arm'
run: cargo nextest run --all-features --workspace
working-directory: ./rust/${{ matrix.folder }}
- name: Run tests (Windows)
if: runner.os == 'Windows'
run: cargo nextest run --all-features --workspace
working-directory: ./rust/${{ matrix.folder }}
- name: Run tests (macOS)
if: runner.os == 'macOS'
run: cargo nextest run --all-features --workspace
working-directory: ./rust/${{ matrix.folder }}
# Only upload coverage from Linux x86_64 since it runs the complete test suite
# (including integration tests that are skipped on Windows).
- name: Upload to codecov.io
if: matrix.os == 'ubuntu-latest'
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: true
fmt:
strategy:
fail-fast: false
matrix:
folder:
- otap-dataflow
- experimental/query_abstraction
- experimental/query_engine
os:
- ubuntu-latest
- ubuntu-24.04-arm
- windows-latest
- macos-latest
exclude:
- folder: otap-dataflow
os: ubuntu-latest
- folder: otap-dataflow
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: nightly
components: rustfmt
- name: cargo fmt ${{ matrix.folder }}
run: cargo fmt --all -- --check
working-directory: ./rust/${{ matrix.folder }}
# Checks that Pest grammar files are properly formatted using pestfmt.
# Only runs if opl.pest has been modified in PRs, or on pushes to main.
# To format locally: cargo install pest_fmt && pestfmt rust/otap-dataflow/crates/opl/src/opl.pest
pest-fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: Check if opl.pest was modified
id: check_pest
run: |
if [ "${{ github.event_name }}" == "pull_request" ]; then
# For PRs, check if the file was changed
git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -q "rust/otap-dataflow/crates/opl/src/opl.pest" && echo "changed=true" >> $GITHUB_OUTPUT || echo "changed=false" >> $GITHUB_OUTPUT
else
# For pushes to main, always check
echo "changed=true" >> $GITHUB_OUTPUT
fi
- name: Install pestfmt
if: steps.check_pest.outputs.changed == 'true'
run: cargo install pest_fmt
- name: Check opl.pest formatting
if: steps.check_pest.outputs.changed == 'true'
run: |
# Create a backup of the original file before formatting.
# pestfmt modifies files in-place, so we need to preserve the original
# to compare and detect if any formatting changes are needed.
cp rust/otap-dataflow/crates/opl/src/opl.pest /tmp/opl.pest.original
# Run pestfmt to format the file
pestfmt rust/otap-dataflow/crates/opl/src/opl.pest
# Compare with original
if ! diff -q /tmp/opl.pest.original rust/otap-dataflow/crates/opl/src/opl.pest > /dev/null; then
echo "opl.pest is not formatted correctly"
echo ""
echo "Please run the following command to format it:"
echo " pestfmt rust/otap-dataflow/crates/opl/src/opl.pest"
echo ""
echo "Diff:"
diff -u /tmp/opl.pest.original rust/otap-dataflow/crates/opl/src/opl.pest || true
exit 1
else
echo "opl.pest is correctly formatted"
fi
clippy:
strategy:
fail-fast: false
matrix:
folder:
- otap-dataflow
- experimental/query_abstraction
- experimental/query_engine
os:
- ubuntu-latest
- ubuntu-24.04-arm
- windows-latest
- macos-latest
exclude:
- folder: otap-dataflow
os: ubuntu-latest
- folder: otap-dataflow
os: windows-latest
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
components: clippy
- name: cargo clippy ${{ matrix.folder }}
run: |
cargo clippy --all-targets --all-features --workspace -- -D warnings
working-directory: ./rust/${{ matrix.folder }}
deny:
strategy:
fail-fast: false
matrix:
folder:
- otap-dataflow
- experimental/query_abstraction
- experimental/query_engine
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: advisories
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check advisories
manifest-path: ./rust/${{ matrix.folder }}/Cargo.toml
- name: licenses
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check licenses
manifest-path: ./rust/${{ matrix.folder }}/Cargo.toml
- name: bans
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check bans
manifest-path: ./rust/${{ matrix.folder }}/Cargo.toml
- name: sources
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check sources
manifest-path: ./rust/${{ matrix.folder }}/Cargo.toml
docs:
strategy:
fail-fast: false
matrix:
folder:
- otap-dataflow
- experimental/query_abstraction
- experimental/query_engine
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: cargo doc ${{ matrix.folder }}
run: cargo doc --no-deps
working-directory: ./rust/${{ matrix.folder }}
structure_check:
strategy:
fail-fast: false
matrix:
# Only otap-dataflow has a structure check
folder: [otap-dataflow]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: cargo xtask ${{ matrix.folder }}
run: cargo xtask structure-check
working-directory: ./rust/${{ matrix.folder }}
- name: check telemetry macro usage
run: ./scripts/check-direct-telemetry-macros.sh
working-directory: ./rust/${{ matrix.folder }}
# Verify the workspace builds with --no-default-features to catch broken
# optional feature gates (e.g., dev-tools, crypto-*).
no_default_features_check:
strategy:
fail-fast: false
matrix:
folder: [otap-dataflow]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: cargo check --no-default-features --workspace
run: cargo check --no-default-features --workspace
working-directory: ./rust/${{ matrix.folder }}
- name: cargo check validation --no-default-features
run: cargo check -p otap-df-validation --lib --no-default-features
working-directory: ./rust/${{ matrix.folder }}
- name: cargo check benchmarks --no-default-features
run: cargo check -p benchmarks --benches --no-default-features
working-directory: ./rust/${{ matrix.folder }}
# Required matrix combinations for test_and_coverage: otap-dataflow on ubuntu and windows
test_and_coverage_required:
strategy:
fail-fast: false
matrix:
folder: [otap-dataflow]
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: Install OpenSSL (Windows)
if: runner.os == 'Windows'
# Required for the crypto-openssl feature (rustls-openssl -> openssl-sys).
run: |
vcpkg install openssl:x64-windows-static-md
echo "OPENSSL_DIR=$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows-static-md" >> $env:GITHUB_ENV
shell: pwsh
- name: Free disk space (Linux)
if: runner.os == 'Linux'
run: |
echo "disk usage before"
df -h
sudo rm -rf /usr/lib/jvm
sudo rm -rf /usr/share/dotnet
sudo rm -rf /usr/share/swift
sudo rm -rf /usr/local/.ghcup
sudo rm -rf /usr/local/julia*
sudo rm -rf /usr/local/lib/android
sudo rm -rf /usr/local/share/chromium
sudo rm -rf /opt/microsoft /opt/google
sudo rm -rf /opt/az
sudo rm -rf /usr/local/share/powershell
echo "disk usage after"
df -h
- name: Free disk space (Windows)
if: runner.os == 'Windows'
shell: pwsh
run: |
Write-Host "disk usage before"
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name='Used(GB)';Expression={[math]::Round($_.Used/1GB,2)}}, @{Name='Free(GB)';Expression={[math]::Round($_.Free/1GB,2)}}
if (Test-Path "C:\Android") { Remove-Item -Recurse -Force "C:\Android" }
if (Test-Path "C:\SeleniumWebDrivers") { Remove-Item -Recurse -Force "C:\SeleniumWebDrivers" }
if (Test-Path "C:\imagemagick") { Remove-Item -Recurse -Force "C:\imagemagick" }
Write-Host "disk usage after"
Get-PSDrive -PSProvider FileSystem | Select-Object Name, @{Name='Used(GB)';Expression={[math]::Round($_.Used/1GB,2)}}, @{Name='Free(GB)';Expression={[math]::Round($_.Free/1GB,2)}}
- name: install cargo-llvm-cov and nextest
uses: taiki-e/install-action@68675c5a5f1a6950c3975d33f3ae0ef155e5bf3d # v2.68.15
with:
tool: cargo-llvm-cov,cargo-nextest
- uses: actions/setup-go@4b73464bb391d4059bd26b0524d20df3927bd417 # v6.3.0
if: runner.os == 'Linux'
with:
go-version: "1.26.0"
- name: Build the test collector
if: runner.os == 'Linux'
run: make otelarrowcol
- name: Run tests with coverage (Linux x86_64)
if: matrix.os == 'ubuntu-latest'
run: cargo llvm-cov nextest --all-features --workspace --lcov --output-path lcov.info
working-directory: ./rust/${{ matrix.folder }}
- name: Run tests (Windows)
if: runner.os == 'Windows'
run: cargo nextest run --all-features --workspace
working-directory: ./rust/${{ matrix.folder }}
- name: Upload to codecov.io
if: matrix.os == 'ubuntu-latest'
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5.5.2
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: true
# Required matrix combinations for fmt: otap-dataflow on ubuntu and windows
fmt_required:
strategy:
fail-fast: false
matrix:
folder: [otap-dataflow]
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: nightly
components: rustfmt
- name: cargo fmt ${{ matrix.folder }}
run: cargo fmt --all -- --check
working-directory: ./rust/${{ matrix.folder }}
# Required matrix combinations for clippy: otap-dataflow on ubuntu and windows
clippy_required:
strategy:
fail-fast: false
matrix:
folder: [otap-dataflow]
os: [ubuntu-latest, windows-latest]
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
components: clippy
- name: Install OpenSSL (Windows)
if: runner.os == 'Windows'
# Required for the crypto-openssl feature (rustls-openssl -> openssl-sys).
run: |
vcpkg install openssl:x64-windows-static-md
echo "OPENSSL_DIR=$env:VCPKG_INSTALLATION_ROOT\installed\x64-windows-static-md" >> $env:GITHUB_ENV
shell: pwsh
- name: cargo clippy ${{ matrix.folder }}
run: |
cargo clippy --all-targets --all-features --workspace -- -D warnings
working-directory: ./rust/${{ matrix.folder }}
# Required matrix combinations for deny: otap-dataflow only
deny_required:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: advisories
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check advisories
manifest-path: ./rust/otap-dataflow/Cargo.toml
- name: licenses
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check licenses
manifest-path: ./rust/otap-dataflow/Cargo.toml
- name: bans
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check bans
manifest-path: ./rust/otap-dataflow/Cargo.toml
- name: sources
if: '!cancelled()'
uses: EmbarkStudios/cargo-deny-action@3fd3802e88374d3fe9159b834c7714ec57d6c979 # v2.0.15
with:
command: check sources
manifest-path: ./rust/otap-dataflow/Cargo.toml
# Required matrix combinations for docs: otap-dataflow only
docs_required:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: cargo doc otap-dataflow
run: cargo doc --no-deps
working-directory: ./rust/otap-dataflow
validate-configs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
submodules: true
- uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- uses: dtolnay/rust-toolchain@efa25f7f19611383d5b0ccf2d1c8914531636bf9
with:
toolchain: stable
- name: Validate all otel_dataflow config files
run: ./scripts/validate-configs.sh
working-directory: ./rust/otap-dataflow
document-build-options:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- name: Document Build Options
run: |
echo "## :bulb: Build Options" >> $GITHUB_STEP_SUMMARY
echo "" >> $GITHUB_STEP_SUMMARY
echo "- Add the label \`cargobench\` to your PR to run micro benchmarks." >> $GITHUB_STEP_SUMMARY
echo "- More info: [link to docs](https://github.com/open-telemetry/otel-arrow/blob/main/CONTRIBUTING.md#micro-benchmarks)" >> $GITHUB_STEP_SUMMARY
# Aggregated status check - depends only on the required matrix combinations.
# Add/remove jobs from the needs list to change what is required via PR,
# rather than updating GitHub branch protection settings directly.
rust-required-status-check:
runs-on: ubuntu-latest
if: always()
needs:
- test_and_coverage_required
- fmt_required
- clippy_required
- deny_required
- docs_required
- structure_check
- pest-fmt
- no_default_features_check
steps:
- name: Check if all required jobs succeeded
run: |
if [[ "${{ needs.test_and_coverage_required.result }}" != "success" ]]; then
echo "test_and_coverage_required failed or was cancelled"
exit 1
fi
if [[ "${{ needs.fmt_required.result }}" != "success" ]]; then
echo "fmt_required failed or was cancelled"
exit 1
fi
if [[ "${{ needs.clippy_required.result }}" != "success" ]]; then
echo "clippy_required failed or was cancelled"
exit 1
fi
if [[ "${{ needs.deny_required.result }}" != "success" ]]; then
echo "deny_required failed or was cancelled"
exit 1
fi
if [[ "${{ needs.docs_required.result }}" != "success" ]]; then
echo "docs_required failed or was cancelled"
exit 1
fi
if [[ "${{ needs.structure_check.result }}" != "success" ]]; then
echo "structure_check failed or was cancelled"
exit 1
fi
if [[ "${{ needs.pest-fmt.result }}" != "success" ]]; then
echo "pest-fmt failed or was cancelled"
exit 1
fi
if [[ "${{ needs.no_default_features_check.result }}" != "success" ]]; then
echo "no_default_features_check failed or was cancelled"
exit 1
fi
echo "All required checks passed!"