🔧ci: Cross-platform GitHub Actions CI#1686
Conversation
Review: CI/build modernization + netstandard2.0/net48 test coverageThis PR is primarily CI/build infrastructure (no new quantities/units, no changes to generated quantity code). Summary below. Breaking changesNone for library consumers. All changes are internal test/CI/build tooling. The CI/workflow changes
Code quality / generated codeThe only generator change is in - var units = Enum.GetValues<{_unitEnumName}>();
+ var units = EnumHelper.GetValues<{_unitEnumName}>();This is needed because The same substitution is applied by hand in Potential bug / correctness (worth calling out explicitly)
Test coverage
Other
Overall: a large but low-risk, well-scoped infra PR. The one substantive behavior change ( Reviewed by Claude |
bfdb66b to
cb9689b
Compare
Review: #1686 — Cross-platform GitHub Actions CIThis PR migrates CI from Azure Pipelines to GitHub Actions (Linux runners), adds a scheduled .NET Framework 4.8 compatibility workflow, and adds netstandard2.0 asset test coverage. No unit/quantity definitions are touched. Overall solid and well-scoped; a few items below. Breaking changesNone for library consumers — this is CI/build/test infrastructure only. The public API surface is unchanged. The Generated code changes
Potential bug: Azure Artifacts push likely fails silently on missing authIn - name: Configure Azure Artifacts
if: env.AZURE_DEVOPS_PAT != ''
uses: actions/setup-dotnet@v6
with:
source-url: https://pkgs.dev.azure.com/...
env:
NUGET_AUTH_TOKEN: ${{ secrets.AZURE_DEVOPS_PAT }}
- name: Push to Azure Artifacts
if: env.AZURE_DEVOPS_PAT != ''
run: dotnet nuget push "**/*.nupkg" --skip-duplicate --api-key AzureArtifacts
working-directory: nugets
Style/conventions
Bug fix bundled into this PR
Test coverageThe new Minor
No security concerns at medium+ severity, and no new quantities/units in this PR so |
ReviewReviewed the CI/build migration to GitHub Actions plus the incidental code changes it carries along. Overall this is a well-scoped, carefully executed infra PR — no new quantities/units, and the generated-code diff is mechanical and consistent everywhere. Breaking changesNone for library consumers. All changes are to CI, build scripts, test infrastructure, and test-only code. The one production source change ( Possible doc/workflow mismatchThe PR description says the net48 workflow will "run the complete suite weekly (and on demand) on Windows/CLR4", but on:
push:
branches:
- master
workflow_dispatch:There's no Changes to generated code
Incidental bug fix bundled in a CI PR
return Math.Pow(number, 1.0 / n);to a version that special-cases negative Good, non-obvious fixes worth highlighting
Style/consistency nit
Test coverageNice addition: Action version pins
Nothing here blocks merging — mostly a couple of things to double-check (the missing cron trigger, action version pins) and two spots where non-CI behavior changes ride along and would benefit from a one-line callout in the PR description or a code comment. |
Review: #1686 — Cross-platform GitHub Actions CIThis is a CI/infra migration PR (158 files, mostly workflows + mechanical generated-test changes). Here's my review against the usual checklist. Breaking changesNone to the public API. One behavior-relevant fix worth calling out: New quantities/unitsNone added — not applicable here. Generated codeOnly one generator line changed, in
Code quality / style
Potential bugs / things to double-check
SecurityNet positive:
Test coverageGood — the Overall this looks like a well-executed, low-risk infra migration with one nice incidental bug fix. Nothing blocking. |
Review: 🔧ci: Cross-platform GitHub Actions CIThis is a pure CI/build-infra PR — no new quantities/units, no public API surface changes. Overall solid work; the netstandard2.0-asset testing is a genuine improvement that already found (and fixed) a real bug. A few things worth a look before merging. Highlights
Questions / possible issues
Test coverageThe new Style/conventionsNo violations of AGENTS.md conventions spotted — no unit/quantity JSON changes, generated code changes trace back to a single generator source change as expected, file headers preserved on new files. No security concerns beyond the general secrets-handling note above (all secret usage looks conventional — env-var indirection into 🤖 Generated with Claude Code |
ArgumentNullException message formatting differs between .NET Framework and modern .NET. Assert ParamName directly because it is the stable behavioral contract and lets the same tests run on CLR4.
551886b to
5f0521f
Compare
Review: #1686 — Cross-platform GitHub Actions CIThis is a CI/build-infrastructure PR with no changes to unit definitions or public API surface. Breaking changesNone. No New quantities or unitsNone added. Generated code changesOnly one generator template line changed, in - var units = Enum.GetValues<{_unitEnumName}>();
+ var units = EnumHelper.GetValues<{_unitEnumName}>();This is mechanically applied to every
Code quality / best practices
Test coverage
Potential issues / nits
Overall this is a well-scoped, carefully validated infra migration — the author reports both Linux |
5f0521f to
42fc5c3
Compare
Review: #1686 — Cross-platform GitHub Actions CIThis is an infra-only PR (no new quantities/units, no changes to the shipped public API), so I focused on the CI/build changes, the generated-code template change, and a couple of incidental fixes bundled in. Breaking changesNone for consumers of the NuGet packages. All production changes are either CI/build tooling or Changes to generated code
Code quality / good practices
Minor suggestions (non-blocking)
Bug fix bundled in (worth calling out)
Test coverageNot reduced. Moving the full SecurityNo concerns at or above medium severity. The removal of the manual GPG/SHA256 verification script in favor of the official Codecov action + OIDC is a net improvement, not a regression. Overall: a well-structured, security-conscious CI migration. Nothing blocking; the suggestions above are all optional polish. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #1686 +/- ##
======================================
Coverage 96% 96%
======================================
Files 450 450
Lines 29342 29342
======================================
Hits 28310 28310
Misses 1032 1032 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Review: CI migration to GitHub Actions (#1686)This is a CI/build infrastructure PR — no new quantities/units, and only one line of generated-code-generator change, so I'll focus feedback there. Breaking changesNone for library consumers. This only touches build/CI infra, test projects, and one internal test-generator template. No changes to shipped Generated code / code generator changes
Other correctness fixes bundled inA couple of real fixes travel with the CI migration commit:
CI/build workflow changes
Test coverage
Nits
Overall this is a well-scoped, well-tested infra migration with good validation notes in the PR description (test counts on both Linux and Windows net48). No concerns blocking merge from my side. |
|
Correction to my review above: the "Nits" section had a stray typo ("treatureatment") — meant to say the Benchmark csproj's Windows-only |
Review: 🔧ci: Cross-platform GitHub Actions CIThis is primarily a CI/build infrastructure PR (153 files, but ~128 are a single mechanical line change repeated across generated test files). Overall it's a well-scoped, well-documented migration with good validation evidence in the PR description. Breaking changesNone to the shipped library's public API. Not a new quantity/unit PRNo changes under Changes to generated code
Bug fixes surfaced by the net48 target
CI/workflow review
Test coverage
Nits
Overall: solid, low-risk migration with good self-review evidence in the PR description (actual CI run links, local validation, |
Review: Cross-platform GitHub Actions CIThis is a CI/tooling migration PR — no new quantities/units, and no changes to the production quantity/unit generators. 156 files changed, but ~130 of those are a single mechanical line in generated test files, so the actual reviewable surface is small. Nice work overall; a few notes below. Breaking changesNone to the public API. One behavior-relevant fix: Generated code changesThe only generator touched is Code quality
CI/workflow changes
Performance
Test coverageNo new functional tests added (expected for a CI-focused PR), but the SummarySolid, well-scoped infra PR. The two things I'd actually want addressed before merge are minor: the |
Review: 🔧ci: Cross-platform GitHub Actions CIThis is a CI/build-infrastructure PR (no Breaking changesNone to the public API. There is one behavioral fix in Generated codeOnly one generator template changed: Bugs surfaced by this change (good catches)Enabling real test execution on net48 (previously untested) surfaced two latent bugs, both fixed correctly:
This is exactly the value of actually running the net48 suite rather than just compiling for it — nice validation that the new workflow works. Minor nits
SecurityGood improvements here, nothing new to flag:
Other observations
Overall: well-scoped, mechanical, and the incidental bug fixes are a nice bonus from actually exercising the net48 path. No blocking issues found. |
ReviewThis is a CI/build infrastructure migration (Azure Pipelines → GitHub Actions) with no new quantities or units. Overall it's a well-executed, carefully-scoped migration — nice attention to security and cross-platform detail. A few notes: Breaking changesNone for library consumers. Changes to generated code
Code quality / correctness fixes bundled inA few real bug fixes ride along with the CI migration, since they were required to get the net48 suite green:
These are reasonable to bundle since they're purely enablers for the new CI target, not unrelated scope creep. CI/workflow specifics
Build scripts
Test coverageReasonable trade-off: full suite + coverage only runs on No security concerns beyond the OIDC/secret-handling improvements noted above (which are net positives). |
Summary
netstandard2.0,net8.0,net9.0, andnet10.0), and run the main test suite with coverage onnet10.0.net48as an opt-in test target and run the complete suite with dotCover on Windows/CLR4 after every push tomaster(and on demand), uploading complementarynetstandard2.0coverage to Codecov under thenet48flag.netstandard2.0assets on Windows/CLR4 in the compatibility pipeline; bound all new jobs with explicit timeouts.net48target on Windows without blocking Linux solution builds.maintenance/v5for nanoFramework.Validation
./Build/build.ps1passed locally end-to-end after the final test-target refinement: every shipped target compiled, all four suites passed onnet10.0(46,257 tests passed and 20 skipped), and four coverage reports were generated.masterrun will verify the hosted Windows integration.actionlint;git diff --checkpasses.Migration notes
masterafter merging.maintenance/v5.