Repository navigation
Separate Identity Lab coverage from framework reporting #610
Workflow file for this run
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: UltimateAuth CI | |
| on: | |
| push: | |
| branches: | |
| - dev | |
| - 'release/**' | |
| tags: | |
| - 'v*' | |
| pull_request: | |
| branches: | |
| - dev | |
| - 'release/**' | |
| workflow_dispatch: | |
| jobs: | |
| build-test-coverage: | |
| name: Build, Test & Coverage | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| dotnet-version: ['8.0.x', '9.0.x', '10.0.x'] | |
| steps: | |
| - name: 📥 Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: 🧰 Setup .NET SDK ${{ matrix.dotnet-version }} | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: ${{ matrix.dotnet-version }} | |
| - name: 📦 Restore dependencies | |
| run: dotnet restore | |
| - name: 🏗️ Build | |
| run: dotnet build --configuration Release --no-restore | |
| - name: 🧪 Test with coverage | |
| run: | | |
| dotnet test \ | |
| --configuration Release \ | |
| --no-build \ | |
| --filter "FullyQualifiedName!~CodeBeam.UltimateAuth.IdentityLab.Tests" \ | |
| --collect:"XPlat Code Coverage" | |
| - name: Upload coverage reports to Codecov | |
| uses: codecov/codecov-action@v5 | |
| with: | |
| token: ${{ secrets.CODECOV_TOKEN }} | |
| slug: CodeBeamOrg/UltimateAuth | |
| flags: framework | |
| identity-lab-security: | |
| name: Identity Lab security (PostgreSQL) | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| steps: | |
| - name: Checkout repository | |
| uses: actions/checkout@v4 | |
| - name: Setup .NET 10 | |
| uses: actions/setup-dotnet@v4 | |
| with: | |
| dotnet-version: '10.0.x' | |
| - name: Run Identity Lab tests with coverage | |
| run: >- | |
| dotnet test tests/CodeBeam.UltimateAuth.IdentityLab.Tests | |
| --configuration Release | |
| --collect:"XPlat Code Coverage" | |
| --logger "trx;LogFileName=identity-lab.trx" | |
| --results-directory TestResults/IdentityLab | |
| - name: Generate Identity Lab coverage summary | |
| if: always() | |
| shell: bash | |
| run: | | |
| python3 - <<'PY' | |
| import glob | |
| import os | |
| import xml.etree.ElementTree as ET | |
| reports = glob.glob( | |
| "TestResults/IdentityLab/**/coverage.cobertura.xml", | |
| recursive=True | |
| ) | |
| summary_path = os.environ["GITHUB_STEP_SUMMARY"] | |
| with open(summary_path, "a", encoding="utf-8") as output: | |
| output.write("## Identity Lab Coverage\n\n") | |
| if not reports: | |
| output.write("Coverage report was not generated.\n") | |
| raise SystemExit(0) | |
| reports = [ | |
| path for path in reports | |
| if "/In/" not in path.replace("\\", "/") | |
| ] | |
| if not reports: | |
| output.write("No usable coverage report found.\n") | |
| raise SystemExit(0) | |
| report = ET.parse(reports[0]).getroot() | |
| line_rate = float(report.attrib.get("line-rate", 0)) | |
| branch_rate = float(report.attrib.get("branch-rate", 0)) | |
| lines_valid = int(report.attrib.get("lines-valid", 0)) | |
| lines_covered = int(report.attrib.get("lines-covered", 0)) | |
| branches_valid = int(report.attrib.get("branches-valid", 0)) | |
| branches_covered = int(report.attrib.get("branches-covered", 0)) | |
| output.write("| Metric | Coverage |\n") | |
| output.write("|---|---:|\n") | |
| output.write(f"| Lines | {line_rate:.2%} |\n") | |
| output.write(f"| Branches | {branch_rate:.2%} |\n") | |
| output.write( | |
| f"| Covered lines | {lines_covered:,} / {lines_valid:,} |\n" | |
| ) | |
| output.write( | |
| f"| Covered branches | {branches_covered:,} / {branches_valid:,} |\n" | |
| ) | |
| output.write("\n") | |
| output.write( | |
| "Coverage is reported separately from UltimateAuth " | |
| "framework coverage.\n" | |
| ) | |
| PY | |
| - name: Upload Identity Lab test and coverage results | |
| if: always() | |
| uses: actions/upload-artifact@v4 | |
| with: | |
| name: identity-lab-test-results | |
| path: TestResults/IdentityLab | |