name: tests - rust on: push: branches: - main pull_request: types: [opened, reopened, synchronize] jobs: test: strategy: matrix: postgres: - "17" rust: # MSRV - "1.85.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@v4 - name: Cache cargo registry uses: actions/cache@v4 with: path: ~/.cargo/registry key: ${{ runner.os }}-${{ matrix.rust }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v4 with: path: target key: ${{ runner.os }}-${{ matrix.rust }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - uses: actions-rs/toolchain@v1 with: toolchain: "${{ matrix.rust }}" override: true - name: test env: TEST_DB_URL: postgresql://test_user:test_password@localhost:5432/test_db run: cargo test