name: tests - rust on: push: branches: - main pull_request: types: [opened, reopened, synchronize] jobs: test: strategy: matrix: postgres: - "17" rust: # MSRV - "1.88.0" - "stable" runs-on: ubuntu-latest name: "rust ${{ matrix.rust }} / postgres ${{ matrix.postgres }}" services: # Service container for PostgreSQL postgres: image: "postgres:${{ matrix.postgres }}" env: POSTGRES_DB: test_db POSTGRES_USER: test_user POSTGRES_PASSWORD: test_password ports: - 5432:5432 # Set health checks to ensure Postgres is ready before the job starts options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Cache cargo registry uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: ~/.cargo/registry key: ${{ runner.os }}-${{ matrix.rust }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 with: path: target key: ${{ runner.os }}-${{ matrix.rust }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@16499b5e05bf2e26879000db0c1d13f7e13fa3af # v1.0.7 with: toolchain: "${{ matrix.rust }}" override: true - name: test env: TEST_DB_URL: postgresql://test_user:test_password@localhost:5432/test_db run: cargo test