Release: two-phase dual-publish release model - #324
Merged
Merged
Conversation
Bumps csharpier from 1.1.1 to 1.1.2 Bumps xunit.analyzers from 1.23.0 to 1.24.0 Bumps xunit.runner.visualstudio from 3.1.3 to 3.1.4 --- updated-dependencies: - dependency-name: csharpier dependency-version: 1.1.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps - dependency-name: xunit.analyzers dependency-version: 1.24.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-deps - dependency-name: xunit.runner.visualstudio dependency-version: 3.1.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…op/nuget-deps-0259308462 Bump the nuget-deps group with 3 updates
Bumps xunit.runner.visualstudio from 3.1.4 to 3.1.5 --- updated-dependencies: - dependency-name: xunit.runner.visualstudio dependency-version: 3.1.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…evelop/nuget-deps-6aadeae1b1 Bump the nuget-deps group with 1 update
--- updated-dependencies: - dependency-name: csharpier dependency-version: 1.2.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…op/nuget-deps-39349b7924 Bump csharpier from 1.1.2 to 1.2.1
--- updated-dependencies: - dependency-name: Serilog.Sinks.Console dependency-version: 6.1.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…nuget-deps-602f419b37 Bump Serilog.Sinks.Console from 6.0.0 to 6.1.1
Bumps csharpier from 1.2.1 to 1.2.3 --- updated-dependencies: - dependency-name: csharpier dependency-version: 1.2.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…op/nuget-deps-1689e99d0a Bump the nuget-deps group with 1 update
Bumps the actions-deps group with 2 updates in the / directory: [actions/setup-dotnet](https://github.com/actions/setup-dotnet) and [actions/checkout](https://github.com/actions/checkout). Updates `actions/setup-dotnet` from 4 to 5 - [Release notes](https://github.com/actions/setup-dotnet/releases) - [Commits](actions/setup-dotnet@v4...v5) Updates `actions/checkout` from 5 to 6 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](actions/checkout@v5...v6) --- updated-dependencies: - dependency-name: actions/setup-dotnet dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions-deps - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps csharpier from 1.2.3 to 1.2.4 --- updated-dependencies: - dependency-name: csharpier dependency-version: 1.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…op/nuget-deps-133b2bc611 Bump the nuget-deps group with 1 update
Bumps csharpier from 1.2.4 to 1.2.5 --- updated-dependencies: - dependency-name: csharpier dependency-version: 1.2.5 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: nuget-deps ... Signed-off-by: dependabot[bot] <support@github.com>
…op/nuget-deps-262ca43251 Bump the nuget-deps group with 1 update
* Initial plan * Make HttpClient timeout configurable via TimeoutSeconds property Co-authored-by: ptr727 <2061579+ptr727@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ptr727 <2061579+ptr727@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Initial plan * Replace redundant ToString() with string interpolation in FileExAsyncTests --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
* Initial plan * Replace explicit ToString() calls with string interpolation Co-authored-by: ptr727 <2061579+ptr727@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: ptr727 <2061579+ptr727@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
…304) Bumps the actions-deps group with 1 update: [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata). Updates `dependabot/fetch-metadata` from 2 to 3 - [Release notes](https://github.com/dependabot/fetch-metadata/releases) - [Commits](dependabot/fetch-metadata@v2...v3) --- updated-dependencies: - dependency-name: dependabot/fetch-metadata dependency-version: '3' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions-deps ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Convert to two-phase dual-publish release model Replace publish-on-push with the ProjectTemplate/LanguageTags two-phase model: PRs smoke-test only, and publish-release.yml publishes both branches on a weekly schedule (Mon 02:00 UTC) or manual dispatch, with idempotent no-op republish. Adopt the reusable workflow set (get-version, build-nugetlibrary, build-release, build-datebadge), a branch-aware Dependabot merge-bot, Central Package Management, and an AGENTS.md tracking the template. NuGet.org-only (drop GitHub Packages); no Docker/exe/PyPI/codegen. Reconcile the template's strict analyzers (AnalysisMode All + TreatWarningsAsErrors) with the brownfield library by relaxing specific rules in .editorconfig and IL3058 via NoWarn, all documented. * Normalize line endings to .editorconfig; fix husky hook Convert the workflow YAML, dependabot.yml, and AGENTS.md (added LF) to CRLF per .editorconfig, and make .husky/pre-commit LF + executable so its shebang execs on Linux/WSL. Add an .editorconfig rule pinning the hook to LF. * Quote "$GITHUB_OUTPUT" in date-badge task
Resolve the one-time old->new structural conflicts in develop's favour and take the max dependency/tool versions so main's newer Dependabot bumps are not regressed (SourceLink 10.0.201, Serilog 4.3.1, Microsoft.NET.Test.Sdk 18.4.0, xunit.analyzers 1.27.0, csharpier 1.2.6, husky 0.9.1).
Contributor
There was a problem hiding this comment.
Pull request overview
This PR lands the repo’s two-phase dual-publish release model onto main, aligning CI/release automation, Dependabot automation, and build configuration with the template-based workflow structure while reconciling dependency/tool versions via Central Package Management.
Changes:
- Introduces new GitHub Actions workflow set for PR testing (unit tests + gated smoke build) and scheduled/manual publishing for both
mainanddevelop, plus a GitHub App–token-based merge-bot for Dependabot. - Moves shared build settings and package versions into
Directory.Build.propsandDirectory.Packages.props, updating projects to use central package versions and tightening analyzer configuration. - Updates repo docs/config (AGENTS.md, README badge, .editorconfig/.gitignore, Husky hook) to match the new workflow and build conventions.
Reviewed changes
Copilot reviewed 38 out of 40 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| UtilitiesTests/UtilitiesTests.csproj | Drops per-project framework/analyzer/package versions in favor of centralized props/package management. |
| UtilitiesTests/UtilitiesTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/StringHistoryTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/StringCompressionTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/StringCompressionAsyncTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/FileExAsyncTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/ExtensionsTests.cs | Adjusts null-handling tests and cleans up usings (but see review comments re: nullable warnings-as-errors). |
| UtilitiesTests/DownloadTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/DownloadAsyncTests.cs | Removes now-redundant using directives under implicit usings. |
| UtilitiesTests/ConsoleTests.cs | Removes now-redundant using directives under implicit usings. |
| Utilities/Utilities.csproj | Centralizes core properties; adds IL3058 suppression for AOT-related warning and ensures packability. |
| Utilities/StringHistory.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/StringCompression.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/Format.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/FileExOptions.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/FileEx.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/Extensions.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/Download.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/ConsoleEx.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities/CommandLineEx.cs | Removes explicit usings now covered by implicit/global configuration. |
| Utilities.slnx | Adds new solution items and updates workflow file references to the new model. |
| Sandbox/Sandbox.csproj | Centralizes properties; adds IL3058 suppression and uses centrally managed package versions. |
| Sandbox/Program.cs | Minor cleanup (uses AppContext.BaseDirectory) and removes redundant using. |
| README.md | Updates workflow badge to point at the new publishing workflow file. |
| Directory.Packages.props | Introduces Central Package Management versions for dependencies/tools used across projects. |
| Directory.Build.props | Introduces shared build properties (TFM, analyzers, warnings-as-errors, artifacts path, CPM enablement). |
| AGENTS.md | Documents the new branching/release/workflow conventions and automation expectations. |
| .husky/pre-commit | Normalizes formatting while keeping Husky hook behavior the same. |
| .gitignore | Ignores .artifacts directory used by the new shared build configuration. |
| .github/workflows/test-pull-request.yml | Adds PR workflow: unit tests + gated smoke build + required status aggregator job. |
| .github/workflows/publish-release.yml | Adds scheduled/manual (and optional push) publishing workflow with serialized concurrency and branch matrix. |
| .github/workflows/merge-bot-pull-request.yml | Adds Dependabot merge-bot using GitHub App token and branch-aware merge method. |
| .github/workflows/get-version-task.yml | Adds reusable NBGV version computation workflow for downstream build/publish tasks. |
| .github/workflows/DependabotAutoMerge.yml | Removes legacy Dependabot auto-merge workflow. |
| .github/workflows/BuildPublishPipeline.yml | Removes legacy build/publish pipeline workflow. |
| .github/workflows/build-release-task.yml | Adds reusable orchestrator workflow tying together versioning, build, NuGet push, and GitHub release creation. |
| .github/workflows/build-nugetlibrary-task.yml | Adds reusable workflow to build/package the library, optionally push to NuGet, and upload artifacts. |
| .github/workflows/build-datebadge-task.yml | Adds reusable workflow to generate/update a date badge (main-gated). |
| .github/dependabot.yml | Reworks Dependabot config to target both main and develop across ecosystems. |
| .editorconfig | Adds LF override for Husky hook file and documents analyzer severity relaxations for brownfield code. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
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 freeto 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
Land the two-phase dual-publish model on
main, with fully signed & GitHub-verified history. This ismainmerged withdevelop(0f1616d), the one-time old→new structural conflicts resolved in develop's favour, and the max dependency/tool versions taken somain's newer Dependabot bumps are not regressed.All introduced commits are committer =
Pieter Viljoen <ptr727@users.noreply.github.com>and verified, satisfyingrequired_signatures(supersedes #322/#323, which carried unverifiable web-flow-committed history).Dependency reconciliation (max of develop/main)
Net diff vs
developis only the six version bumps above. See #320 for the full change description.Maintainer follow-ups (after merge)
CODEGEN_APP_CLIENT_ID/CODEGEN_APP_PRIVATE_KEY(GitHub App) to both Actions and Dependabot secret stores for the merge-bot.develop's deps up to match (or open a small sync PR).🤖 Generated with Claude Code