Replace template CI/CD with branch-scoped self-publishing model - #349
Merged
Conversation
Port the branch-scoped self-publishing pipeline from ptr727/LanguageTags, replacing the ProjectTemplate two-phase model. main publishes stable releases and develop publishes prereleases; each branch publishes itself when a shipped input changes. - Workflows: drop build-datebadge-task, build-nugetlibrary-task, and get-version-task; add validate-task (unit tests + lint); rework build-release-task (NBGV, keyless OIDC NuGet push, flat Utilities.7z), publish-release (push/dispatch self-publisher), test-pull-request (validate + smoke-build + required aggregator), and merge-bot (Dependabot only, no codegen job). - Add WORKFLOW.md (canonical CI/CD spec) and repo-config/ (rulesets and settings as code; delete_branch_on_merge off). - Add cspell.json as the single spell-check source; reconcile AGENTS, CODESTYLE, copilot-instructions, dependabot, tasks.json, and the slnx. - Bump version floor 3.5 -> 3.6; update README and HISTORY. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Replaces the repo's CI/CD pipeline with a branch-scoped self-publishing model: main publishes stable releases, develop publishes prereleases, and publishes are triggered only by shipped-input changes (or manual dispatch). It also codifies the workflow contract and required GitHub configuration as documentation + config-as-code.
Changes:
- Introduces a new workflow architecture: reusable
validate-task, ref-scoped CI onpush, and a self-publishingpublish-releasetriggered by shipped-input path inclusions. - Reworks the release build to use a single build/release task with NBGV outputs threaded through, OIDC NuGet publishing via
NuGet/login, and a flatUtilities.7zrelease asset. - Adds/updates repo documentation and configuration artifacts (WORKFLOW.md, repo-config/, cspell.json) and bumps the version floor to 3.6.
Reviewed changes
Copilot reviewed 25 out of 25 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| WORKFLOW.md | Adds the canonical CI/CD contract, architecture, and audit methodology for workflows and repo configuration. |
| version.json | Bumps version floor from 3.5 to 3.6. |
| Utilities.slnx | Updates solution items to include new docs/config and new workflow; removes deleted workflows. |
| Utilities.code-workspace | Removes embedded CSpell word list in favor of repo-root cspell.json. |
| repo-config/settings.json | Codifies repository settings (merge methods, auto-merge, delete-branch-on-merge off). |
| repo-config/ruleset-main.json | Adds config-as-code for the main branch ruleset (merge-only, required check, signatures). |
| repo-config/ruleset-develop.json | Adds config-as-code for the develop branch ruleset (squash-only + linear history, required check, signatures). |
| repo-config/README.md | Documents repo-config purpose, usage, and lockstep requirements for required-check renames. |
| repo-config/configure.sh | Adds an idempotent apply/check script to audit and enforce repo settings/rulesets/secrets presence. |
| README.md | Updates project README to reflect new distribution links, badges, and CI/CD/release model summary. |
| HISTORY.md | Adds v3.6 release notes focused on CI/CD changes and new workflow artifacts. |
| cspell.json | Adds a centralized CSpell configuration and dictionary. |
| CODESTYLE.md | Updates coding-style guide to align with the new validation model (CI lint gate + cspell.json). |
| AGENTS.md | Refactors agent guidance to point to WORKFLOW.md for CI/CD and repo-config for enforced GitHub settings. |
| .vscode/tasks.json | Cleans up task header comments and clarifies which tasks form the clean-compile set. |
| .github/workflows/validate-task.yml | Adds reusable validation task: unit tests + CSharpier/dotnet-format/markdownlint/cspell/actionlint. |
| .github/workflows/test-pull-request.yml | Reworks CI to run on push (head-resolved reusable workflows) and produces the required aggregator job. |
| .github/workflows/publish-release.yml | Reworks publisher to be branch-scoped and shipped-input-triggered; gates publish on validate-task. |
| .github/workflows/merge-bot-pull-request.yml | Simplifies merge-bot to Dependabot auto-merge only (no semver-major exception), with App-token strategy. |
| .github/workflows/get-version-task.yml | Removes old reusable version task (inlined into build-release-task). |
| .github/workflows/build-release-task.yml | Reworks the core build/version/publish logic (NBGV, OIDC NuGet push, Utilities.7z, artifact lifecycle). |
| .github/workflows/build-nugetlibrary-task.yml | Removes old build task (superseded by build-release-task). |
| .github/workflows/build-datebadge-task.yml | Removes date-badge workflow/task (no longer part of the contract). |
| .github/dependabot.yml | Updates rationale comments; preserves dual-target main/develop Dependabot strategy. |
| .github/copilot-instructions.md | Minor wording updates to reflect CODESTYLE.md section framing. |
This was referenced Jun 29, 2026
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 free
to 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.
Ports the branch-scoped self-publishing CI/CD from
ptr727/LanguageTags, replacing the ProjectTemplate two-phase model.mainpublishes stable releases anddeveloppublishes prereleases; each branch publishes itself when a shipped input changes. Utilities has no codegen, so the generator workflows and merge-bot codegen job are omitted.Workflows
build-datebadge-task.yml,build-nugetlibrary-task.yml,get-version-task.yml.validate-task.yml(unit tests + CSharpier /dotnet format style/ markdownlint / cspell / actionlint).build-release-task.yml(NBGV, keyless OIDCNuGet/loginpush, flatUtilities.7zasset),publish-release.yml(push/dispatch self-publisher with a shipped-input inclusion list),test-pull-request.yml(validate + smoke-build +Check pull request workflow status jobaggregator), andmerge-bot-pull-request.yml(Dependabot auto-merge only).Config and docs
WORKFLOW.md(canonical CI/CD spec, codegen sections removed) andrepo-config/(rulesets + settings as code,delete_branch_on_mergeoff).cspell.jsonas the single spell-check source; reconcileAGENTS.md,CODESTYLE.md,.github/copilot-instructions.md,.github/dependabot.yml,.vscode/tasks.json, andUtilities.slnx.README.mdandHISTORY.md.Verified locally: actionlint, markdownlint, cspell, YAML/JSON parse,
bash -n configure.sh, EOL per.editorconfig, and Husky clean-compile.🤖 Generated with Claude Code