Github Pipeline for Rust

Github actions are a great way to automate your development workflow. In this post, we will explore how to set up a simple Github action for a Rust project.

Useful Github actions

Check code formatting

rustfmt:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - name: Check format
      run: cargo fmt --check

Check for unused dependencies

unused-dependencies:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - name: Install cargo-machete
      uses: taiki-e/install-action@v2
      with:
        tool: cargo-machete
    - name: Check for unused dependencies
      run: cargo machete

Static code analysis

clippy:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - name: Check for clippy warnings
      run: cargo clippy --all-targets --all-features --color always -- -D warnings

Run the Unit tests

unit-tests:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - name: Run unit tests
      run: cargo test --lib

Run the Integration tests

integration-tests:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Run integration tests
        run: cargo test --test integration_test

Release Build

build:
  runs-on: ubuntu-latest
  steps:
    - uses: actions/checkout@v4
    - uses: dtolnay/rust-toolchain@stable
    - uses: Swatinem/rust-cache@v2
    - name: Release build
      run: cargo build --release --verbose

Checkout the full example code on github.

Read more