From 743502b183df66c641a6e3b31760db8948be39a5 Mon Sep 17 00:00:00 2001 From: Sunil Thakares Date: Thu, 18 Jun 2026 15:31:52 +0530 Subject: [PATCH] ci: improve Rust workflow checks --- .github/workflows/rust.yml | 134 +++++++++++++++++++------------------ 1 file changed, 70 insertions(+), 64 deletions(-) diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 6df50ef..192940e 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -1,79 +1,85 @@ -name: Rust CI + name: Rust CI -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] + on: + push: + branches: ["main"] + pull_request: + branches: ["main"] -env: - CARGO_TERM_COLOR: always - CARGO_INCREMENTAL: 0 - REGISTRY: ghcr.io - IMAGE_NAME: ${{ github.repository }} + env: + CARGO_TERM_COLOR: always + CARGO_INCREMENTAL: 0 + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} -jobs: - test: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 + jobs: + test: + name: Test & Quality Checks + runs-on: ubuntu-latest - - name: Install Rust toolchain - uses: dtolnay/rust-toolchain@stable - with: - components: rustfmt, clippy + steps: + - name: Checkout Repository + uses: actions/checkout@v4 - - name: Cache Cargo - uses: Swatinem/rust-cache@v2 + - name: Install Rust Toolchain + uses: dtolnay/rust-toolchain@stable + with: + components: rustfmt, clippy - - name: Check formatting - run: cargo fmt -- --check + - name: Cache Cargo Dependencies + uses: Swatinem/rust-cache@v2 - - name: Run clippy - run: cargo clippy --all-targets -- -D warnings + - name: Check Formatting + run: cargo fmt --check - - name: Build - run: cargo build --verbose + - name: Run Clippy + run: cargo clippy --all-targets --all-features -- -D warnings - - name: Run tests - run: cargo test --verbose + - name: Build Release + run: cargo build --release --verbose - docker: - runs-on: ubuntu-latest - needs: test - permissions: - contents: read - packages: write # Required for GHCR push + - name: Run Tests + run: cargo test --all-features --verbose - steps: - - uses: actions/checkout@v4 + docker: + name: Build Docker Image + runs-on: ubuntu-latest + needs: test - - name: Log in to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} + permissions: + contents: read + packages: write - - name: Extract metadata (tags, labels) - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - tags: | - type=sha - type=raw,value=latest,enable={{is_default_branch}} + steps: + - name: Checkout Repository + uses: actions/checkout@v4 - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} - - name: Build and push Docker image - uses: docker/build-push-action@v6 - with: - context: . - file: ./Dockerfile - push: ${{ github.ref == 'refs/heads/main' }} - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max + - name: Extract Docker Metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + tags: | + type=sha + type=raw,value=latest,enable={{is_default_branch}} + + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and Push Docker Image + uses: docker/build-push-action@v6 + with: + context: . + file: ./Dockerfile + push: ${{ github.ref == 'refs/heads/main' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max