Conversation
- ci.yml: triggers on push to develop/feature/fix/hotfix branches and PRs to develop/master; validates branch naming on PRs; builds and tests on net10.0; uploads test results (.trx) as artifacts - release.yml: triggers on push to master; build, test, extract version, guard against re-releasing, pack, GitHub Release, push to NuGet.org - ci-cd-test-run.ps1: local runner with lint/dry/ci/all modes and ci/release/both workflow selection; uses RUNNING_LOCALLY env var gate to skip upload-artifact when running under act
- release.yml: remove unused RUNNING_LOCALLY env block (no upload-artifact step in release workflow, so the variable was declared but never referenced) - release.yml: add --no-restore to dotnet pack (Restore step already ran; omitting it caused an implicit redundant restore) - ci-cd-test-run.ps1: update description wording — act uses push event so PR-only jobs (validate-branch) are not exercised locally; wording now accurately says 'approximates' rather than 'mirrors exactly' - ci-cd-test-run.ps1: guard -Job parameter to CI workflow only; if -Job is supplied with -Workflow release or both, emit a clear warning and skip the -j flag for the Release workflow to avoid act erroring on an unknown job name
…to prevent static cache interference
feat: add GitHub Actions CI/CD workflows and local test runner
There was a problem hiding this comment.
Pull request overview
Brings CI/CD automation into the repo by adding GitHub Actions workflows for CI and releases, plus a local PowerShell runner to lint/simulate workflows via actionlint + act. It also addresses flaky tests caused by shared static caching by isolating affected tests into a non-parallelized xUnit collection.
Changes:
- Add CI workflow to build/test on
net10.0and (when not running underact) upload.trxtest results. - Add release workflow to build/test, derive package version from
.csproj, create a GitHub Release, and push packages to NuGet. - Add local CI/CD runner script and adjust xUnit test parallelization for cache-sensitive tests.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/ci.yml |
Adds CI build/test pipeline with branch-name validation and gated artifact upload. |
.github/workflows/release.yml |
Adds automated build/test/pack/release/NuGet publish on pushes to master. |
ci-cd-test-run.ps1 |
Provides local workflow linting and act-based simulation/execution. |
tests/Blazing.Json.Queryable.Tests/CollectionDefinitions.cs |
Defines a non-parallelized xUnit collection for cache-sensitive tests. |
tests/Blazing.Json.Queryable.Tests/UnitTests/Evaluators/SpanPropertyAccessorTests.cs |
Assigns tests to the cache-isolation collection. |
tests/Blazing.Json.Queryable.Tests/UnitTests/Performance/PropertyAccessorCachingTests.cs |
Assigns tests to the cache-isolation collection. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
gragra33
added a commit
that referenced
this pull request
Apr 19, 2026
- release.yml: add concurrency group to prevent race conditions when
multiple pushes to master happen close together; cancel-in-progress
is false so a running release is never aborted mid-way
- release.yml: add explicit 'Fail if this version was already released'
step after tag_check so a duplicate-version push to master fails
loudly with ::error:: rather than silently succeeding with no publish
- CollectionDefinitions.cs: fix XML doc cref targets — qualify
DisableParallelization as Xunit.CollectionDefinitionAttribute.DisableParallelization
and remove the space in ConcurrentDictionary{TKey,TValue} to avoid
CS1574 warnings when doc generation is enabled
- release.yml: add concurrency group to prevent race conditions when
multiple pushes to master happen close together; cancel-in-progress
is false so a running release is never aborted mid-way
- release.yml: add explicit 'Fail if this version was already released'
step after tag_check so a duplicate-version push to master fails
loudly with ::error:: rather than silently succeeding with no publish
- CollectionDefinitions.cs: fix XML doc cref targets — qualify
DisableParallelization as Xunit.CollectionDefinitionAttribute.DisableParallelization
and remove the space in ConcurrentDictionary{TKey,TValue} to avoid
CS1574 warnings when doc generation is enabled
fix: address Copilot PR #7 review feedback
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.
Summary
Merges
developintomaster— brings in the GitHub Actions CI/CD pipeline introduced in PR #6.Changes
CI workflow (
.github/workflows/ci.yml)develop,feature/**,fix/**,hotfix/**and PRs targetingdevelop/mastervalidate-branchjob (PR-only): enforcesfeature/,fix/,hotfix/, ordevelopnaming conventionsbuild-and-testjob: builds and runs the full test suite onnet10.0; uploads.trxtest results as artifacts (gated viaRUNNING_LOCALLYenv var so localactruns skip the upload)Release workflow (
.github/workflows/release.yml)master.csproj, guards against re-releasing an existing tag, packs, creates a GitHub Release, and pushes to NuGet.orgLocal test runner (
ci-cd-test-run.ps1)-Mode lint|dry|ci|all,-Workflow ci|release|both,-Job(CI only) parametersactionlintfor YAML validation andactfor local workflow simulation-Jobis CI-workflow-only guardedTest isolation fixes
[Collection("SpanPropertyAccessorCache")]toSpanPropertyAccessorTestsandPropertyAccessorCachingTestsCollectionDefinitions.cswith[CollectionDefinition("SpanPropertyAccessorCache", DisableParallelization = true)]— prevents any other test collection from running concurrently and corrupting the shared staticSpanPropertyAccessorcacheTest Results
All 487 tests pass.