Skip to content

Claiming: sign in with a passkey, publish a token, be verified (#16) #58

Claiming: sign in with a passkey, publish a token, be verified (#16)

Claiming: sign in with a passkey, publish a token, be verified (#16) #58

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
build-and-test:
name: build & test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v7
with:
persist-credentials: false
- name: Set up .NET 10 SDK
uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'
- name: Restore
run: dotnet restore MUIndex.slnx
# Warnings are errors solution-wide (Directory.Build.props), so a clean build is the signal.
- name: Build
run: dotnet build MUIndex.slnx -c Release --no-restore
# TUnit runs on Microsoft.Testing.Platform; execute each of the five test projects directly,
# because the classic `dotnet test`/VSTest path is not available on .NET 10.
# The Catalog and Crawler suites want a real PostgreSQL 17 through Testcontainers. On a laptop
# with no container runtime they skip by name, which is honest — but a silently skipped storage
# suite in CI is a green build that tested no storage, so the Linux leg (where a Docker daemon
# is present) demands one and fails if it cannot get it.
- name: Test — Catalog
shell: bash
env:
MUI_REQUIRE_POSTGRES: ${{ matrix.os == 'ubuntu-latest' }}
run: dotnet run -c Release --no-build --project tests/MUI.Catalog.Tests/MUI.Catalog.Tests.csproj
- name: Test — Crawl
shell: bash
run: dotnet run -c Release --no-build --project tests/MUI.Crawl.Tests/MUI.Crawl.Tests.csproj
- name: Test — Discovery
shell: bash
run: dotnet run -c Release --no-build --project tests/MUI.Discovery.Tests/MUI.Discovery.Tests.csproj
# The Crawler suite runs whole crawl cycles against a real PostgreSQL with the socket replaced,
# so it wants a database for the same reason the Catalog suite does — and more so, because the
# advisory lock that keeps N replicas to one crawler is a database behaviour with nothing about
# it to fake.
- name: Test — Crawler
shell: bash
env:
MUI_REQUIRE_POSTGRES: ${{ matrix.os == 'ubuntu-latest' }}
run: dotnet run -c Release --no-build --project tests/MUI.Crawler.Tests/MUI.Crawler.Tests.csproj
- name: Test — Web
shell: bash
run: dotnet run -c Release --no-build --project tests/MUI.Web.Tests/MUI.Web.Tests.csproj