Per-lib CI/release workflows and build.cs scripts - #21
Merged
Conversation
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>
There was a problem hiding this comment.
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.csscripts and.slnfsolution filters for targeted restore/build/test/pack. - Replaced monolithic
ci.yml/release.ymlwith reusableci-template.yml/release-template.ymlplus 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.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
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_callinput names contain hyphens, soinputs.test-targets/inputs.os-matrixare 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-prefixis not a valid expression because the input name contains a hyphen. This will break the GitHub Release creation step. Use bracket notation for thetag_namevalue.
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 testdoes not accept a--projectoption; 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));
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces the monolithic
ci.ymlandrelease.ymlwith 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 providingrestore,build,clean,pack, and test targets{lib}/{lib}.slnf- per-lib solution filters overhttp-lib.slnx{lib}/build.cs- file-based C# entry points:dotnet run signatures/build.cs -- build|test|packWorkflows
ci-template.yml(reusable) + four path-filtered per-lib CI workflows running build + test with trx test reportinghybrid-cache-handler-checks.yml- benchmarks and RFC 9111 conformance moved out of CI into their own workflowrelease-template.yml(reusable) + four per-lib release workflows, eachworkflow_dispatchwith a singleversioninput; existing tag prefixes (sfv-v,sig-v,cache-v,fdc-v) preservedNotes for review
--report-xunit-trxrather than the generic--report-trx/p:Version; the release template pushes the tag before packing and MinVer derives the version from itREADME badge and build/test instructions updated accordingly.