feat: enhance solution structure and CI workflows#9
Conversation
There was a problem hiding this comment.
Pull request overview
Adds release-tooling and NuGet maintenance utilities to support automated deprecation of older NuGet versions, updates CI/release workflows (including GitHub Actions linting), and documents the revised stable/beta release process.
Changes:
- Introduces
analyticsLibrary.ReleaseTooling+ tests, and aanalyticsLibrary.NuGetMaintenancetool to apply NuGet.org deprecations. - Refactors
release.ymlto always pack all packages at a single version, deploy, then deprecate prior CI beta builds and older stable versions. - Enhances
ci.ymlwith anactionlintjob and broader “tooling changes” detection; updates README and central packages.
Reviewed changes
Copilot reviewed 19 out of 19 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tools/analyticsLibrary.NuGetMaintenance/Program.cs | CLI tool to list published versions and apply deprecations via NuGet.org API. |
| tools/analyticsLibrary.NuGetMaintenance/analyticsLibrary.NuGetMaintenance.csproj | Adds new non-packable .NET 8 tool project referencing ReleaseTooling. |
| tests/analyticsLibrary.ReleaseTooling.Tests/VersionDeprecationPlannerTests.cs | Unit tests for version classification and stable/legacy logic. |
| tests/analyticsLibrary.ReleaseTooling.Tests/NuGetGalleryDeprecationApiTests.cs | Verifies request method/headers/content type for deprecation API calls. |
| tests/analyticsLibrary.ReleaseTooling.Tests/NuGetFlatContainerIntegrationTests.cs | Adds a live NuGet API integration test (currently runs in default test runs). |
| tests/analyticsLibrary.ReleaseTooling.Tests/GlobalUsings.cs | Enables global xUnit using for the new test project. |
| tests/analyticsLibrary.ReleaseTooling.Tests/FlatContainerIndexParserTests.cs | Unit tests for parsing flat container version JSON. |
| tests/analyticsLibrary.ReleaseTooling.Tests/analyticsLibrary.ReleaseTooling.Tests.csproj | New .NET 8 xUnit test project for ReleaseTooling. |
| src/analyticsLibrary.ReleaseTooling/VersionDeprecationPlanner.cs | Implements rules for CI beta detection and “older stable than release” checks. |
| src/analyticsLibrary.ReleaseTooling/ReleaseConstants.cs | Centralizes package IDs and deprecation messages/prefixes. |
| src/analyticsLibrary.ReleaseTooling/NuGetGalleryDeprecationApi.cs | Builds NuGet.org deprecation PUT requests (form-urlencoded). |
| src/analyticsLibrary.ReleaseTooling/NuGetFlatContainerHttp.cs | Fetches published versions via NuGet v3 flat container index. |
| src/analyticsLibrary.ReleaseTooling/FlatContainerIndexParser.cs | Parses the versions array out of flat container JSON. |
| src/analyticsLibrary.ReleaseTooling/analyticsLibrary.ReleaseTooling.csproj | New .NET 8 tooling library with NuGet.Versioning dependency. |
| README.md | Documents beta/stable release behavior, actionlint, and deprecation behavior/requirements. |
| Directory.Packages.props | Adds centrally-managed NuGet.Versioning version. |
| Analytics Library.sln | Adds ReleaseTooling, its tests, and the NuGetMaintenance tool; introduces a “tools” solution folder. |
| .github/workflows/release.yml | Packs all packages, deploys, then runs deprecation tool after publishing. |
| .github/workflows/ci.yml | Adds actionlint job and broadens change detection to include tooling paths. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| [Trait("Category", "Integration")] | ||
| public class NuGetFlatContainerIntegrationTests | ||
| { | ||
| [Fact] | ||
| public async Task Flat_container_index_for_core_has_versions_array() | ||
| { | ||
| using var http = new HttpClient { Timeout = TimeSpan.FromSeconds(30) }; | ||
| Exception? last = null; |
| @@ -155,80 +46,33 @@ jobs: | |||
| - name: Test | |||
| run: dotnet test -c Release --no-build --verbosity normal | |||
| var chunks = new List<List<string>>(); | ||
| for (var i = 0; i < items.Count; i += size) | ||
| { | ||
| chunks.Add(items.Skip(i).Take(size).ToList()); |
- Added new projects: `analyticsLibrary.ReleaseTooling`, `analyticsLibrary.NuGetMaintenance`, and their corresponding test projects to the solution. - Updated `Directory.Packages.props` to include `NuGet.Versioning` package. - Improved CI workflows by adding a linting job for GitHub Actions and refining the release process to include deprecation of older package versions. - Updated README to clarify the stable release process and CI configurations.
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/hpractv/analyticsLibrary/sessions/5b1b9a5b-7038-4a2f-9e50-5dc4d00f3803 Co-authored-by: hpractv <13870231+hpractv@users.noreply.github.com>
Agent-Logs-Url: https://github.com/hpractv/analyticsLibrary/sessions/5b1b9a5b-7038-4a2f-9e50-5dc4d00f3803 Co-authored-by: hpractv <13870231+hpractv@users.noreply.github.com>
Implemented the requested review-thread updates in commits 54239c0 and 9a2baf0: the NuGet flat container test is now deterministic (no live network dependency), CI/release workflows now exclude |
…onsistency - Upgraded actions/checkout, actions/setup-dotnet, and actions/upload-artifact to their latest versions in CI and release workflows. - Refactored class names in the analytics library to follow PascalCase convention, improving code readability and consistency across the project.
| [Serializable] | ||
| public class table | ||
| public class Table | ||
| { | ||
| public string schema { get; set; } | ||
| public string name { get; set; } | ||
| public IEnumerable<column> columns { get; set; } | ||
| public IEnumerable<Column> columns { get; set; } |
| using System.Linq; | ||
|
|
||
| namespace analyticsLibrary.Core | ||
| { |
| namespace analyticsLibrary.Algorithms | ||
| { | ||
| public static class sorting | ||
| public static class Sorting | ||
| { | ||
| private static bool stringLess(object value1, object value2) => string.Compare(value1.ToString(), value2.ToString()) <= 0; |
| @@ -243,3 +87,13 @@ jobs: | |||
| --api-key ${{ secrets.NUGET_API_KEY }} \ | |||
| dotnet pack src/analyticsLibrary.Excel/analyticsLibrary.Excel.csproj -c Release --no-build -p:Version=$V -o ./artifacts | ||
| dotnet pack src/analyticsLibrary.Access/analyticsLibrary.Access.csproj -c Release --no-build -p:Version=$V -o ./artifacts | ||
| dotnet pack src/analyticsLibrary.Hadoop/analyticsLibrary.Hadoop.csproj -c Release --no-build -p:Version=$V -o ./artifacts | ||
| dotnet pack src/analyticsLibrary/analyticsLibrary.csproj -c Release --no-build -p:Version=$V -o ./artifacts |
| [Serializable] | ||
| public class table | ||
| public class Table | ||
| { | ||
| public string schema { get; set; } | ||
| public string name { get; set; } | ||
| public IEnumerable<column> columns { get; set; } | ||
| public IEnumerable<Column> columns { get; set; } |
|
@copilot apply changes based on the comments in this thread |
Agent-Logs-Url: https://github.com/hpractv/analyticsLibrary/sessions/a451a23a-a4a9-47a7-9dd4-fa7930371322 Co-authored-by: hpractv <13870231+hpractv@users.noreply.github.com>
Agent-Logs-Url: https://github.com/hpractv/analyticsLibrary/sessions/a451a23a-a4a9-47a7-9dd4-fa7930371322 Co-authored-by: hpractv <13870231+hpractv@users.noreply.github.com>
Applied the thread updates in bb03b46 and 5ed1546: restored the previous public API type names to avoid unintended breaking renames, quoted the NuGet API key in release push, and added release-version validation to block workflow dispatches below project versions. No UI changes were made (workflow/library-only changes), so there is no UI screenshot. |
analyticsLibrary.ReleaseTooling,analyticsLibrary.NuGetMaintenance, and their corresponding test projects to the solution.Directory.Packages.propsto includeNuGet.Versioningpackage.