name: Rust on: [push, pull_request] env: CARGO_TERM_COLOR: always SQLX_VERSION: 0.7 SQLX_FEATURES: "rustls,postgres" jobs: test: name: Test runs-on: ubuntu-latest services: postgres: image: postgres:14 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: key: sqlx-${{ env.SQLX_VERSION }} - name: Install sqlx-cli run: cargo install sqlx-cli --version ${{ env.SQLX_VERSION }} --features ${{ env.SQLX_FEATURES }} --no-default-features --locked - name: Install postgresql-client run: sudo apt-get update && sudo apt-get install -y postgresql-client - name: Migrate database run: SKIP_DOCKER=true ./scripts/init_db - name: Check sqlx-data.json is up to date run: cargo sqlx prepare --workspace --check - name: Run tests run: cargo test fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: rustfmt - name: Enforce formatting run: cargo fmt --check clippy: name: Clippy runs-on: ubuntu-latest services: postgres: image: postgres:14 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: postgres ports: - 5432:5432 steps: - uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable with: components: clippy - uses: Swatinem/rust-cache@v2 with: key: sqlx-${{ env.SQLX_VERSION }} - name: Install sqlx-cli run: cargo install sqlx-cli --version=${{ env.SQLX_VERSION }} --features ${{ env.SQLX_FEATURES }} --no-default-features --locked - name: Install postgresql-client run: sudo apt-get update && sudo apt-get install postgresql-client -y - name: Migrate database run: SKIP_DOCKER=true ./scripts/init_db - name: Linting run: cargo clippy -- -D warnings coverage: name: Code coverage runs-on: ubuntu-latest services: postgres: image: postgres:14 env: POSTGRES_USER: postgres POSTGRES_PASSWORD: password POSTGRES_DB: postgres ports: - 5432:5432 steps: - name: Checkout repository uses: actions/checkout@v3 - uses: dtolnay/rust-toolchain@stable - name: Install postgresql-client run: sudo apt-get update && sudo apt-get install postgresql-client -y - uses: Swatinem/rust-cache@v2 with: key: sqlx-${{ env.SQLX_VERSION }} - name: Install sqlx-cli run: cargo install sqlx-cli --version=${{ env.SQLX_VERSION }} --features ${{ env.SQLX_FEATURES }} --no-default-features --locked - name: Migrate database run: SKIP_DOCKER=true ./scripts/init_db - name: Generate code coverage run: cargo install cargo-tarpaulin && cargo tarpaulin --verbose --workspace