Harden release readiness and provider resilience #37
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build-and-test: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Restore | |
| run: dotnet restore SharpClawCode.sln | |
| - name: Build | |
| run: dotnet build SharpClawCode.sln --no-restore --configuration Release --warnaserror | |
| - name: Build examples | |
| run: | | |
| dotnet build examples/WebApiAgent/WebApiAgent.csproj --no-restore --configuration Release | |
| dotnet build examples/MinimalConsoleAgent/MinimalConsoleAgent.csproj --no-restore --configuration Release | |
| dotnet build examples/WorkerServiceHost/WorkerServiceHost.csproj --no-restore --configuration Release | |
| dotnet build examples/McpToolAgent/McpToolAgent.csproj --no-restore --configuration Release | |
| - name: Test | |
| run: dotnet test SharpClawCode.sln --no-build --configuration Release --collect:"XPlat Code Coverage" --results-directory ./coverage | |
| - name: Agent scenario harness | |
| run: | | |
| dotnet run --project src/SharpClaw.Code.Cli/SharpClaw.Code.Cli.csproj --no-build --configuration Release -- test run | |
| dotnet run --project src/SharpClaw.Code.Cli/SharpClaw.Code.Cli.csproj --no-build --configuration Release -- test gates | |
| - name: Upload coverage | |
| if: matrix.os == 'ubuntu-latest' | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: coverage-report | |
| path: ./coverage/**/coverage.cobertura.xml | |
| - name: Enforce coverage floor | |
| if: matrix.os == 'ubuntu-latest' | |
| shell: pwsh | |
| run: ./.github/scripts/Test-Coverage.ps1 -CoverageRoot ./coverage -MinimumLineCoverage 38 | |
| package-smoke: | |
| strategy: | |
| matrix: | |
| os: [ubuntu-latest, windows-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Pack and install production artifacts | |
| shell: pwsh | |
| run: ./.github/scripts/Test-Packages.ps1 | |
| vscode-extension: | |
| runs-on: ubuntu-latest | |
| defaults: | |
| run: | |
| working-directory: extensions/vscode | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-node@v4 | |
| with: | |
| node-version: '22' | |
| cache: npm | |
| cache-dependency-path: extensions/vscode/package-lock.json | |
| - run: npm ci | |
| - run: npm run compile | |
| documentation: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - run: dotnet tool restore | |
| - run: dotnet docfx docs/docfx.json --warningsAsErrors |