V10.5.5/service update - #167
Conversation
Deploy was being skipped when optional test_mac matrix was disabled in workflow_dispatch, due to skipped-ancestor propagation. Now explicitly gate deploy on direct dependency success only, so both manual workflow runs trigger deployment regardless of macOS test matrix configuration.
Greptile SummaryThis PR is a v10.5.5 service update that bumps 45+ NuGet dependencies to their latest patch versions, tightens CI/CD deployment conditions, and adds NET9-specific string-processing fast paths to
Confidence Score: 5/5Safe to merge — changes are routine dependency upgrades, CI condition hardening, and well-tested performance optimisations with no altered public API contracts. All source-level changes in Condition.cs and Validator.cs are demonstrably equivalent rewrites: the Enum.TryParse substitution is verified by a legacy-equivalence matrix test, the LINQ-to-loop transformations preserve identical exit conditions, and the HasDifferenceCore bitmap path is guarded behind a compile-time NET9_0_OR_GREATER preprocessor symbol. The CI permission reduction (contents: write → read) is correct for a NuGet-only deploy job. Dependency upgrades are patch-level with no API surface changes. No files require special attention. The CI pipeline condition change is the most structurally significant edit but is logically sound given that run-privileged-jobs is only false for fork pull requests, which are already excluded from deployment by the github.event_name != 'pull_request' guard. Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart TD
A[push / workflow_dispatch] --> B[init]
B --> C[build]
B --> D[prepare_test]
C --> E[pack]
C --> F[test_linux]
C --> G[test_windows]
C --> H[test_mac\noptional]
F & G & H --> I[test_qualitygate]
I --> J[sonarcloud\nrun-privileged-jobs=true]
I --> K[codecov\nrun-privileged-jobs=true]
I --> L[codeql\nrun-privileged-jobs=true]
C & E & I & J & K & L --> M{deploy condition\nalways + all == success\n+ not pull_request}
M -->|all success| N[deploy → NuGet push]
M -->|any skipped/failed| O[deploy skipped]
style H fill:#ffe4b5
style J fill:#d4edda
style K fill:#d4edda
style L fill:#d4edda
style N fill:#c3e6cb
style O fill:#f8d7da
%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%%
flowchart TD
A[push / workflow_dispatch] --> B[init]
B --> C[build]
B --> D[prepare_test]
C --> E[pack]
C --> F[test_linux]
C --> G[test_windows]
C --> H[test_mac\noptional]
F & G & H --> I[test_qualitygate]
I --> J[sonarcloud\nrun-privileged-jobs=true]
I --> K[codecov\nrun-privileged-jobs=true]
I --> L[codeql\nrun-privileged-jobs=true]
C & E & I & J & K & L --> M{deploy condition\nalways + all == success\n+ not pull_request}
M -->|all success| N[deploy → NuGet push]
M -->|any skipped/failed| O[deploy skipped]
style H fill:#ffe4b5
style J fill:#d4edda
style K fill:#d4edda
style L fill:#d4edda
style N fill:#c3e6cb
style O fill:#f8d7da
Reviews (5): Last reviewed commit: "✨ add tests for hasDifference with non-A..." | Re-trigger Greptile |
Update package versions across all target frameworks: Codebelt extensions to 11.1.1, Microsoft.NET.Test.SDK to 18.8.1, and framework-specific packages to latest patch versions. Maintains compatibility across net9.0, net10.0, and netstandard2.0.
Align DocFX build infrastructure with latest tooling requirements and best practices.
Introduce net9.0+ optimizations using Span<char> and System.Buffers.Text.Base64 for improved performance on modern runtimes. Refactor algorithms to eliminate allocations in hot paths: IsWhiteSpace, IsBinaryDigits, and IsHexadecimal now use direct iteration. Optimize HasDifference with bitmap-based character tracking for net9.0+ while maintaining netstandard2.0 compatibility. Update corresponding tests to verify optimizations.
Extract interface and type validation logic into dedicated helper methods (ContainsInterfaceCore, ContainsTypeCore) to reduce method overhead. Optimize ContainsAny with net9.0+ Span-based optimizations for string searching with case-insensitive comparisons. Inline null and flag validation checks into helpers to eliminate redundant calls. Restructure error-handling deferred-evaluation patterns to compute error messages only when exceptions are thrown. Update tests to verify optimization and refactoring correctness.
Introduce Cuemon.Kernel.Benchmarks project with dedicated performance measurement suites for core validation and condition utilities: HasDifferenceBenchmark, ValidatorCoreBenchmark, ValidatorFormatBenchmark, ValidatorMiscBenchmark, ValidatorStringBenchmark, and ValidatorTypeBenchmark. Add benchmark project reference to solution. Benchmarks follow repository conventions with namespace matching Cuemon.Kernel and class names ending with Benchmark.
Extend Condition.IsEnum coverage with exhaustive test matrix for diverse enum types including negative values, [Flags] attributes, and non-enum comparisons. Added ValidatorTest enhancements for edge case validation. Tests ensure new Enum.TryParse implementation maintains backward compatibility with legacy Enum.Parse semantics across int, byte, long, and signed variants.
Add [WarmupCount(3)] attribute to all validator benchmarks (HasDifference, ValidatorCore, ValidatorFormat, ValidatorMisc, ValidatorString, ValidatorType) to stabilize measurement accuracy and reduce noise in micro-benchmark results. Include generated GitHub-compatible benchmark reports documenting optimization baseline metrics.
Updated all per-package release notes documenting version 10.5.5 with dependency upgrades to latest compatible versions across all supported target frameworks and new Kernel module benchmarking infrastructure.
Added comprehensive changelog entry for version 10.5.5 documenting new Cuemon.Kernel.Benchmarks infrastructure, performance optimizations in Condition and Validator classes, dependency upgrades across all packages, DocFX tooling updates, and CI/CD pipeline security improvements.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #167 +/- ##
==========================================
+ Coverage 94.19% 94.21% +0.01%
==========================================
Files 602 602
Lines 19186 19283 +97
Branches 2009 2032 +23
==========================================
+ Hits 18073 18167 +94
- Misses 1049 1052 +3
Partials 64 64 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
This pull request updates dependencies across multiple packages to their latest compatible versions and makes several improvements to the CI/CD pipeline configuration. The main changes include dependency upgrades for all supported target frameworks, enhancements to deployment job conditions, and updates to permissions and secrets in the CI workflow.
Dependency Upgrades:
PackageReleaseNotes.txtfiles for theCuemonpackages have been updated to version 10.5.5, noting that dependencies are now upgraded to the latest compatible versions for all supported target frameworks (TFMs). This affects core, ASP.NET Core, authentication, data, diagnostics, and various extension packages. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]CI/CD Pipeline Improvements:
.github/workflows/ci-pipeline.ymlis now more robust, ensuring deployments only proceed if all required jobs succeed and preventing optional skipped jobs from blocking deployment.Other Changes:
NGINX_VERSIONargument in.docfx/Dockerfile.docfxwas updated to use version1.31-alpineinstead of1.31.1-alpinefor improved compatibility.