# The name of your workflow. GitHub displays the names of your workflows on your repository's "Actions" tab name: Rust # To automatically trigger the workflow on: # NB: this differs from the book's project! # These settings allow us to run this specific CI pipeline for PRs against # this specific branch (a.k.a. book chapter). push: branches: - main pull_request: types: [ opened, synchronize, reopened ] branches: - main # A workflow run is made up of one or more jobs, which run in parallel by default # Each job runs in a runner environment specified by runs-on jobs: # Unique identifier of our job (`job_id`) test: # Sets the name `Test` for the job, which is displayed in the GitHub UI name: Test # Containers must run in Linux based operating systems runs-on: ubuntu-latest steps: # Downloads a copy of the code in your repository before running CI tests - name: Check out repository code # The uses keyword specifies that this step will run v3 of the actions/checkout action. # This is an action that checks out your repository onto the runner, allowing you to run scripts or other actions against your code (such as build and test tools). # You should use the checkout action any time your workflow will run against the repository's code. uses: actions/checkout@v4 # This GitHub Action installs a Rust toolchain using rustup. It is designed for one-line concise usage and good defaults. - name: Install the Rust toolchain uses: dtolnay/rust-toolchain@stable - name: Run tests run: cargo test # `fmt` container job fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: # Specific to dtolnay/rust-toolchain: Comma-separated string of additional components to install components: rustfmt - name: Enforce formatting run: cargo fmt --check # `clippy` container job clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Linting run: cargo clippy -- -D warnings