Skip to content

Per-lib CI/release workflows and build.cs scripts - #21

Merged
damianh merged 2 commits into
mainfrom
dh/scaling-parakeet
Jul 29, 2026
Merged

Per-lib CI/release workflows and build.cs scripts#21
damianh merged 2 commits into
mainfrom
dh/scaling-parakeet

Conversation

@damianh

@damianh damianh commented Jul 29, 2026

Copy link
Copy Markdown
Owner

Replaces the monolithic ci.yml and release.yml with per-lib workflows so each library builds, tests, and releases independently. Previously every push built and tested all four libs, and releasing required a package dropdown with a case statement. Conventions borrowed from the duende/foss identity-model setup.

Build infrastructure

  • .github/BuildHelpers/ - shared Bullseye/SimpleExec target library providing restore, build, clean, pack, and test targets
  • {lib}/{lib}.slnf - per-lib solution filters over http-lib.slnx
  • {lib}/build.cs - file-based C# entry points: dotnet run signatures/build.cs -- build|test|pack

Workflows

  • ci-template.yml (reusable) + four path-filtered per-lib CI workflows running build + test with trx test reporting
  • hybrid-cache-handler-checks.yml - benchmarks and RFC 9111 conformance moved out of CI into their own workflow
  • release-template.yml (reusable) + four per-lib release workflows, each workflow_dispatch with a single version input; existing tag prefixes (sfv-v, sig-v, cache-v, fdc-v) preserved

Notes for review

  • Test projects are xUnit v3 on Microsoft.Testing.Platform, so the test target uses --report-xunit-trx rather than the generic --report-trx
  • Packages version via MinVer, so the pack target does not pass /p:Version; the release template pushes the tag before packing and MinVer derives the version from it
  • Verified locally: all four libs build, all 828 tests pass, pack produces packages

README badge and build/test instructions updated accordingly.

Replace monolithic ci.yml/release.yml with per-lib CI and release
workflows using shared templates, Bullseye-based build.cs per lib
(inspired by identity-model conventions), and per-lib solution
filters. Benchmarks and RFC 9111 conformance move to a separate
hybrid-cache-handler-checks workflow. MinVer derives release
versions from tags pushed by the release template.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 29, 2026 11:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refactors CI and release automation from monolithic workflows into per-library build entry points (build.cs), reusable workflow templates, and per-lib solution filters so each library can build/test/release independently.

Changes:

  • Added per-lib build.cs scripts and .slnf solution filters for targeted restore/build/test/pack.
  • Replaced monolithic ci.yml/release.yml with reusable ci-template.yml/release-template.yml plus per-lib CI and release workflows.
  • Split hybrid-cache-handler benchmarks and RFC 9111 conformance checks into a dedicated workflow.

Reviewed changes

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
structured-field-values/structured-field-values.slnf Adds solution filter for the structured-field-values library.
structured-field-values/build.cs Adds per-lib build/test entry point using shared targets.
signatures/signatures.slnf Adds solution filter for the signatures library.
signatures/build.cs Adds per-lib build/test entry point using shared targets.
hybrid-cache-handler/hybrid-cache-handler.slnf Adds solution filter including samples/benchmarks/conformance projects.
hybrid-cache-handler/build.cs Adds per-lib build/test entry point using shared targets.
file-distributed-cache/file-distributed-cache.slnf Adds solution filter for the file-distributed-cache library.
file-distributed-cache/build.cs Adds per-lib build/test entry point using shared targets.
README.md Updates badges and build/test instructions for per-lib scripts.
.github/workflows/structured-field-values-release.yml Adds per-lib release workflow that calls release-template.yml.
.github/workflows/structured-field-values-ci.yml Adds path-filtered per-lib CI workflow that calls ci-template.yml.
.github/workflows/signatures-release.yml Adds per-lib release workflow that calls release-template.yml.
.github/workflows/signatures-ci.yml Adds path-filtered per-lib CI workflow that calls ci-template.yml.
.github/workflows/hybrid-cache-handler-release.yml Adds per-lib release workflow that calls release-template.yml.
.github/workflows/hybrid-cache-handler-ci.yml Adds path-filtered per-lib CI workflow that calls ci-template.yml.
.github/workflows/hybrid-cache-handler-checks.yml Adds separate workflow for benchmarks and RFC conformance checks.
.github/workflows/file-distributed-cache-release.yml Adds per-lib release workflow that calls release-template.yml.
.github/workflows/file-distributed-cache-ci.yml Adds path-filtered per-lib CI workflow that calls ci-template.yml.
.github/workflows/ci-template.yml Introduces reusable CI workflow for build/test + trx reporting.
.github/workflows/release-template.yml Introduces reusable release workflow driven by tag + MinVer + pack/push.
.github/workflows/ci.yml Removes the monolithic CI workflow.
.github/workflows/release.yml Removes the monolithic release workflow.
.github/BuildHelpers/Targets.cs Adds shared Bullseye/SimpleExec targets for restore/build/pack/test.
.github/BuildHelpers/BuildHelpers.csproj Adds shared helper project referenced by per-lib build scripts.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/BuildHelpers/Targets.cs
Comment thread README.md Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot AI review requested due to automatic review settings July 29, 2026 12:04

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 24 out of 24 changed files in this pull request and generated 2 comments.

Comments suppressed due to low confidence (3)

.github/workflows/ci-template.yml:51

  • workflow_call input names contain hyphens, so inputs.test-targets / inputs.os-matrix are not valid property references inside expressions. This will break matrix construction (fromJson(...)) at runtime. Use bracket notation for both inputs.
      matrix:
        target: ${{ fromJson(inputs.test-targets) }}
        os: ${{ fromJson(inputs.os-matrix) }}

.github/workflows/release-template.yml:90

  • inputs.tag-prefix is not a valid expression because the input name contains a hyphen. This will break the GitHub Release creation step. Use bracket notation for the tag_name value.
        uses: softprops/action-gh-release@v2
        with:
          tag_name: ${{ inputs.tag-prefix }}${{ inputs.version }}
          name: ${{ inputs.package }} ${{ inputs.version }}

.github/BuildHelpers/Targets.cs:69

  • dotnet test does not accept a --project option; the project/solution/directory should be provided as the positional argument. As written, this target is likely to fail in CI when invoking the test target.
    public static void TestTarget(string targetName, string testProjectPath) =>
        Target(targetName, dependsOn: [Restore], () =>
            RunAsync(
                "dotnet",
                $"test --project {testProjectPath} -c Release --no-restore --report-xunit-trx " +
                    $"--report-xunit-trx-filename {testProjectPath.Replace('/', '-')}-tests.trx",
                RepoRoot.Value));

Comment thread .github/workflows/ci-template.yml
Comment thread .github/workflows/release-template.yml
@damianh
damianh merged commit c6dc46d into main Jul 29, 2026
11 checks passed
@damianh
damianh deleted the dh/scaling-parakeet branch July 29, 2026 14:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants