Release: two-phase dual-publish release model - #322
Closed
ptr727 wants to merge 32 commits into
Closed
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 (new reusable workflows, CPM, AGENTS.md, reformatting) 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
Promotes the repository to the two-phase, dual-publish release model on main, aligning CI/CD, dependency management, and repo process documentation with the template-driven structure introduced on develop (with select version reconciliations to avoid regressing Dependabot bumps).
Changes:
- Introduces the new CI/CD workflow set (PR smoke-test + scheduled/manual publish + Dependabot merge-bot) and removes the legacy publish + dependabot automerge workflows.
- Switches to Central Package Management (
Directory.Build.props+Directory.Packages.props) and updates project files accordingly (incl. IL3058 suppression for AOT projects). - Adds/updates repo process & configuration files (
AGENTS.md,.editorconfighusky LF rule,.gitignore, README badge, solution items).
Reviewed changes
Copilot reviewed 38 out of 40 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| UtilitiesTests/UtilitiesTests.csproj | Moves package versions to central management. |
| UtilitiesTests/UtilitiesTests.cs | Removes now-redundant usings (implicit usings). |
| UtilitiesTests/StringHistoryTests.cs | Removes now-redundant usings. |
| UtilitiesTests/StringCompressionTests.cs | Removes now-redundant usings. |
| UtilitiesTests/StringCompressionAsyncTests.cs | Removes now-redundant usings. |
| UtilitiesTests/FileExAsyncTests.cs | Removes now-redundant usings. |
| UtilitiesTests/ExtensionsTests.cs | Adjusts null-handling tests; trims usings. |
| UtilitiesTests/DownloadTests.cs | Removes now-redundant usings. |
| UtilitiesTests/DownloadAsyncTests.cs | Removes now-redundant usings. |
| UtilitiesTests/ConsoleTests.cs | Removes now-redundant usings. |
| Utilities/Utilities.csproj | Centralizes TF/analyzers; suppresses IL3058; packable. |
| Utilities/StringHistory.cs | Removes now-redundant usings. |
| Utilities/StringCompression.cs | Removes now-redundant usings. |
| Utilities/Format.cs | Removes now-redundant usings. |
| Utilities/FileExOptions.cs | Removes now-redundant usings. |
| Utilities/FileEx.cs | Removes now-redundant usings. |
| Utilities/Extensions.cs | Removes now-redundant usings. |
| Utilities/Download.cs | Removes now-redundant usings. |
| Utilities/ConsoleEx.cs | Removes now-redundant usings. |
| Utilities/CommandLineEx.cs | Removes now-redundant usings. |
| Utilities.slnx | Adds new solution items + workflow files. |
| Sandbox/Sandbox.csproj | Centralizes packages; suppresses IL3058. |
| Sandbox/Program.cs | Minor cleanup (AppContext usage). |
| README.md | Updates workflow status badge to new workflow. |
| Directory.Packages.props | Adds centralized package versions. |
| Directory.Build.props | Adds shared build properties/analyzer strictness. |
| AGENTS.md | Documents branching/release/workflow conventions. |
| .husky/pre-commit | Normalizes hook file (LF/shebang handling). |
| .gitignore | Ignores .artifacts output directory. |
| .github/workflows/test-pull-request.yml | New PR test/smoke build workflow + required-check aggregator. |
| .github/workflows/publish-release.yml | New scheduled/manual publisher with two-phase gating. |
| .github/workflows/merge-bot-pull-request.yml | New Dependabot merge-bot using app token + branch-aware merge method. |
| .github/workflows/get-version-task.yml | New reusable NBGV version task. |
| .github/workflows/build-release-task.yml | New orchestrator reusable workflow (build + optional publish). |
| .github/workflows/build-nugetlibrary-task.yml | New reusable NuGet build/push task with artifacts. |
| .github/workflows/build-datebadge-task.yml | New reusable BYOB date badge task. |
| .github/workflows/DependabotAutoMerge.yml | Removes legacy Dependabot auto-merge workflow. |
| .github/workflows/BuildPublishPipeline.yml | Removes legacy publish-on-push workflow. |
| .github/dependabot.yml | Duplicates ecosystems per-branch (main/develop). |
| .editorconfig | Adds Husky hook LF rule + analyzer relaxations. |
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.
Uh oh!
There was an error while loading. Please reload this page.
This was referenced Jun 5, 2026
ptr727 added a commit
that referenced
this pull request
Jun 5, 2026
## Summary Land the two-phase dual-publish model on `main`, with **fully signed & GitHub-verified history**. This is `main` merged with `develop` (`0f1616d`), the one-time old→new structural conflicts resolved in **develop's favour**, and the **max dependency/tool versions** taken so `main`'s newer Dependabot bumps are not regressed. All introduced commits are committer = `Pieter Viljoen <ptr727@users.noreply.github.com>` and verified, satisfying `required_signatures` (supersedes #322/#323, which carried unverifiable web-flow-committed history). ### Dependency reconciliation (max of develop/main) | Package / tool | Version | | --- | --- | | Microsoft.SourceLink.GitHub | 10.0.201 | | Serilog | 4.3.1 | | Microsoft.NET.Test.Sdk | 18.4.0 | | xunit.analyzers | 1.27.0 | | csharpier (tool) | 1.2.6 | | husky (tool) | 0.9.1 | Net diff vs `develop` is only the six version bumps above. See #320 for the full change description. ## Maintainer follow-ups (after merge) - Add `CODEGEN_APP_CLIENT_ID` / `CODEGEN_APP_PRIVATE_KEY` (GitHub App) to **both** Actions and Dependabot secret stores for the merge-bot. - Let Dependabot bring `develop`'s deps up to match (or open a small sync PR). - Kick off the first publish via **Actions → publish-release.yml → Run workflow** once secrets are in. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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
Release the two-phase dual-publish model to
main. This branch ismainmerged withdevelop(the squash from #320), with 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.Supersedes #321 (the direct
develop→mainPR, which had inherent merge conflicts from the old merge base). Themainruleset has been updated to the new model: required check is nowCheck pull request workflow status, merge-commit only, strict/up-to-date off, linear-history requirement dropped.Dependency reconciliation (max of develop/main)
Everything else is exactly the
developtree (see #320 for the full change description). Net diff vsdevelopis only the six version bumps above.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.developruleset's required check toCheck pull request workflow status(themainruleset is already updated).develop'sDirectory.Packages.props/ tools to match so the branches stay in sync (or let Dependabot do it).publish-release.yml→ Run workflow once secrets are in place.🤖 Generated with Claude Code