# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. name: Rust pre-merge checks on: # Always run this workflow when commits are pushed to main. push: branches: - main # Run this workflow on pull requests targeting main but only if files in runtime/rust change. pull_request: branches: - main paths: - 'runtime/rust/**' jobs: pre-merge-rust: runs-on: ubuntu-latest permissions: contents: read steps: - uses: actions/checkout@v4 - name: Set up system dependencies run: | sudo apt-get update -y sudo apt-get install -y protobuf-compiler - name: Cache Cargo Registry uses: actions/cache@v3 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ github.head_ref || github.ref_name }}-${{ hashFiles('**/Cargo.lock') }} - name: Cache Cargo Tools uses: actions/cache@v3 with: path: ~/.cargo/bin key: ${{ runner.os }}-cargo-tools-${{ github.head_ref || github.ref_name }}-${{ hashFiles('**/Cargo.lock') }} - name: Set up Rust Toolchain Components run: rustup component add rustfmt clippy - name: Run Cargo Check working-directory: runtime/rust run: cargo check --locked - name: Verify Code Formatting working-directory: runtime/rust run: cargo fmt -- --check - name: Run Clippy Checks working-directory: runtime/rust run: cargo clippy --no-deps --all-targets -- -D warnings - name: Install and Run cargo-deny working-directory: runtime/rust run: | cargo-deny --version || cargo install cargo-deny cargo-deny check --hide-inclusion-graph licenses timeout-minutes: 5 - name: Run Unit Tests working-directory: runtime/rust run: cargo test --locked --all-targets