Memory measurement #9420
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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!" |