name: Compilation Guard # Protect compilation state from regression on every push/PR on: push: branches: [ main, develop ] pull_request: branches: [ main ] env: CARGO_TERM_COLOR: always RUST_BACKTRACE: 1 SQLX_OFFLINE: "true" jobs: compilation-guard: name: Compilation Guard runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup Rust toolchain uses: dtolnay/rust-toolchain@stable with: components: clippy, rustfmt - name: Setup Rust cache uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: Install system dependencies run: | sudo apt-get update sudo apt-get install -y cmake build-essential pkg-config libssl-dev protobuf-compiler - name: Workspace compilation check run: | echo "Checking workspace compilation..." cargo check --workspace --all-targets echo "Workspace compiles successfully" - name: Clippy check run: cargo clippy --workspace --all-targets - name: Formatting check run: cargo fmt --all -- --check - name: Generate dependency tree snapshot run: | cargo tree --format "{p} {f}" | sort > dependency-tree.txt echo "Dependency tree captured ($(wc -l < dependency-tree.txt) entries)" - name: Upload compilation artifacts uses: actions/upload-artifact@v4 if: always() with: name: compilation-guard-artifacts path: | dependency-tree.txt retention-days: 30