CI #20
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: KeyLoad CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: keyload-${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| analyzer-rules: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 10 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 | |
| with: | |
| global-json-file: global.json | |
| - run: dotnet restore tests/KeyLoad.Analyzers.Tests/KeyLoad.Analyzers.Tests.csproj | |
| - run: dotnet build tests/KeyLoad.Analyzers.Tests/KeyLoad.Analyzers.Tests.csproj --no-restore --configuration Release | |
| - run: dotnet test --project tests/KeyLoad.Analyzers.Tests --no-build --no-restore --configuration Release | |
| - name: Retain rule regression and diagnostic evidence | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: analyzer-rule-evidence | |
| path: | | |
| tests/KeyLoad.Analyzers.Tests/**/TestResults/** | |
| artifacts/code-quality/** | |
| if-no-files-found: error | |
| verify: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 | |
| with: | |
| global-json-file: global.json | |
| - run: dotnet restore KeyLoad.slnx | |
| - run: dotnet build KeyLoad.slnx --no-restore --configuration Release | |
| - name: Verify EditorConfig and analyzer fixes | |
| run: dotnet format KeyLoad.slnx --verify-no-changes --no-restore | |
| - name: Verify repository governance | |
| run: node scripts/Features/RepositoryGovernance/verify.mjs | |
| - name: Verify source-owned Roslyn rules | |
| run: dotnet test --project tests/KeyLoad.Analyzers.Tests --no-build --no-restore --configuration Release | |
| - run: dotnet test --project tests/KeyLoad.UnitTests --no-build --no-restore --configuration Release | |
| - run: dotnet test --project tests/KeyLoad.RecoveryTests --no-build --no-restore --configuration Release | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: test-results-${{ matrix.os }} | |
| path: | | |
| **/TestResults/** | |
| artifacts/qualification/** | |
| if-no-files-found: ignore | |
| - name: Retain compiler diagnostic reports | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: code-quality-${{ matrix.os }} | |
| path: artifacts/code-quality/** | |
| if-no-files-found: error | |
| docker-rf3: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 | |
| with: | |
| global-json-file: global.json | |
| - name: Require the actual Docker runtime | |
| run: docker version | |
| - run: dotnet restore KeyLoad.slnx | |
| - run: dotnet build tests/KeyLoad.IntegrationTests --no-restore --configuration Release | |
| - name: Qualify RF3 through the real SDK clients | |
| run: dotnet test --project tests/KeyLoad.IntegrationTests --no-build --no-restore --configuration Release | |
| - name: Retain real topology and fault receipts | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: docker-rf3-qualification | |
| path: | | |
| tests/KeyLoad.IntegrationTests/**/TestResults/** | |
| artifacts/qualification/** | |
| if-no-files-found: error | |
| - name: Retain RF3 compiler diagnostic reports | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: code-quality-docker-rf3 | |
| path: artifacts/code-quality/** | |
| if-no-files-found: error | |
| comparison-smoke: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6.0.0 | |
| with: | |
| global-json-file: global.json | |
| - run: dotnet restore KeyLoad.slnx | |
| - run: dotnet build tests/KeyLoad.ComparisonTests --no-restore --configuration Release | |
| - run: dotnet test --project tests/KeyLoad.ComparisonTests --no-build --no-restore --configuration Release | |
| - name: Measure 1 KiB documents, eight clients and three graph hops | |
| run: dotnet test --project tests/KeyLoad.ComparisonTests --no-build --no-restore --configuration Release | |
| env: | |
| KEYLOAD_COMPARISON_DOCUMENTS: 128 | |
| KEYLOAD_COMPARISON_OPERATIONS: 60 | |
| KEYLOAD_COMPARISON_WARMUP: 5 | |
| KEYLOAD_COMPARISON_REPETITIONS: 3 | |
| KEYLOAD_COMPARISON_CONCURRENCY: 8 | |
| KEYLOAD_COMPARISON_DIMENSIONS: 32 | |
| KEYLOAD_COMPARISON_TOPK: 10 | |
| KEYLOAD_COMPARISON_GRAPHVERTICES: 128 | |
| KEYLOAD_COMPARISON_GRAPHDEPTH: 3 | |
| KEYLOAD_COMPARISON_REPORT_NAME: json-1k-c8 | |
| - name: Measure 16 KiB documents, four clients and five graph hops | |
| run: dotnet test --project tests/KeyLoad.ComparisonTests --no-build --no-restore --configuration Release | |
| env: | |
| KEYLOAD_COMPARISON_DOCUMENTS: 128 | |
| KEYLOAD_COMPARISON_OPERATIONS: 60 | |
| KEYLOAD_COMPARISON_WARMUP: 5 | |
| KEYLOAD_COMPARISON_REPETITIONS: 3 | |
| KEYLOAD_COMPARISON_CONCURRENCY: 4 | |
| KEYLOAD_COMPARISON_PAYLOADBYTES: 16384 | |
| KEYLOAD_COMPARISON_DIMENSIONS: 32 | |
| KEYLOAD_COMPARISON_TOPK: 10 | |
| KEYLOAD_COMPARISON_GRAPHVERTICES: 128 | |
| KEYLOAD_COMPARISON_GRAPHDEPTH: 5 | |
| KEYLOAD_COMPARISON_REPORT_NAME: json-16k-c4 | |
| - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: comparison-suite | |
| path: artifacts/comparisons/** | |
| if-no-files-found: warn | |
| - name: Retain comparison compiler diagnostic reports | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 | |
| if: always() | |
| with: | |
| name: code-quality-comparisons | |
| path: artifacts/code-quality/** | |
| if-no-files-found: error |