Nightly Quality Signals #48
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
| # ============================================================================= | |
| # Nightly Quality Signals — scheduled coverage and dependency signal lane. | |
| # Runs at 03:55 UTC daily and on manual dispatch. | |
| # Topology context documented in ci-required.yml header. | |
| # ============================================================================= | |
| name: Nightly Quality Signals | |
| on: | |
| schedule: | |
| - cron: '55 3 * * *' | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| backend-coverage: | |
| name: Backend Coverage (Domain + Application) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 30 | |
| env: | |
| NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup .NET | |
| uses: actions/setup-dotnet@v5 | |
| with: | |
| dotnet-version: 8.0.x | |
| cache: true | |
| cache-dependency-path: | | |
| backend/Taskdeck.sln | |
| backend/**/*.csproj | |
| - name: Restore backend dependencies | |
| run: dotnet restore backend/Taskdeck.sln | |
| - name: Run Domain coverage | |
| run: > | |
| dotnet test backend/tests/Taskdeck.Domain.Tests/Taskdeck.Domain.Tests.csproj | |
| -c Release | |
| --no-restore | |
| --collect:"XPlat Code Coverage" | |
| --results-directory artifacts/nightly-quality/backend/domain | |
| - name: Run Application coverage | |
| run: > | |
| dotnet test backend/tests/Taskdeck.Application.Tests/Taskdeck.Application.Tests.csproj | |
| -c Release | |
| --no-restore | |
| --collect:"XPlat Code Coverage" | |
| --results-directory artifacts/nightly-quality/backend/application | |
| - name: Upload backend coverage artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: nightly-quality-backend-coverage | |
| path: artifacts/nightly-quality/backend | |
| if-no-files-found: ignore | |
| retention-days: 14 | |
| frontend-coverage: | |
| name: Frontend Coverage | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Setup Node | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: 24.13.1 | |
| cache: npm | |
| cache-dependency-path: frontend/taskdeck-web/package-lock.json | |
| - name: Install frontend dependencies | |
| working-directory: frontend/taskdeck-web | |
| run: npm ci | |
| - name: Run frontend coverage | |
| working-directory: frontend/taskdeck-web | |
| run: npm run test:coverage | |
| - name: Collect frontend coverage artifacts | |
| if: always() | |
| run: | | |
| mkdir -p artifacts/nightly-quality/frontend | |
| cp -R frontend/taskdeck-web/coverage artifacts/nightly-quality/frontend/coverage || true | |
| cp -R frontend/taskdeck-web/test-results artifacts/nightly-quality/frontend/test-results || true | |
| - name: Upload frontend coverage artifacts | |
| if: always() | |
| uses: actions/upload-artifact@v7 | |
| with: | |
| name: nightly-quality-frontend-coverage | |
| path: artifacts/nightly-quality/frontend | |
| if-no-files-found: ignore | |
| retention-days: 14 | |
| dependency-security-signals: | |
| name: Dependency and Security Signals (Non-blocking) | |
| uses: ./.github/workflows/reusable-dependency-security-signals.yml | |
| with: | |
| dotnet-version: 8.0.x | |
| node-version: 24.13.1 | |
| artifact-name: nightly-quality-dependency-security-signals | |
| retention-days: 14 | |
| summary-title: Nightly Quality Dependency Security Summary | |
| workflow-context: nightly-quality |