Conversation
This PR updates the codegen files. Co-authored-by: ptr727-codegen[bot] <275599072+ptr727-codegen[bot]@users.noreply.github.com>
This PR updates the codegen files. Co-authored-by: ptr727-codegen[bot] <275599072+ptr727-codegen[bot]@users.noreply.github.com>
Closes#97. ## What Decouple merging from publishing across all four delivery targets (Docker, NuGet, PyPI, console executable). - **Two-phase by default.** PRs run unit tests plus a **path-gated smoke build** of only the changed targets (Docker `linux/amd64` only, reduced executable matrix, no push). Merges to `main`/`develop` no longer publish. - **Sole publisher.** `publish-release.yml` (weekly schedule + manual dispatch) builds and publishes **both** branches in one run via a branch matrix; its `push` trigger publishes only when the **`PUBLISH_ON_MERGE`** repository variable is `true` (opt-in legacy continuous-release). - **Parameterized chain.** `ref`/`branch`/`smoke` are threaded through every reusable task; branch-derived config keys off `inputs.branch`, never `github.ref_name`, so a scheduled run can version/build `develop` as well as `main`. `get-version-task.yml` gained a `ref` input. - **Collision/cache safety for the matrix.** Build artifacts are branch-suffixed and the Docker registry cache is branch-scoped (`buildcache-main`/`buildcache-develop`, reads both, writes own) so the two legs never collide or overwrite each other's cache. - **Required check hardened.** The aggregator fails if the paths-filter job fails, so a target-changing PR can't merge with its smoke build silently skipped. - **Consolidation.** CodeGen weekly → daily; unit tests folded into the PR workflow; `test-release-task.yml` and `publish-periodic-docker-release.yml` removed. - **Per-target modularity.** Self-contained leaf tasks + `enable_*` gates so a derived project can drop a target with minimal edits (checklist in AGENTS.md). ## Copilot runbook Corrects `.github/copilot-instructions.md`: the `requestReviews` GraphQL mutation now reliably re-requests a review (previously documented as non-working / manual-UI-only), and the wait-for-maintainer-merge gate is now explicit in AGENTS.md. ## Notes - `.NET` NuGet restore caching is intentionally left off (low overhead, no lock files under Central Package Management) — documented inline. - Default flips the template's prior "publish on every push" identity to two-phase; docs (README/AGENTS.md) updated accordingly. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor
There was a problem hiding this comment.
Pull request overview
This PR restructures the repository’s CI/CD into a two-phase model: pull requests run unit tests plus path-gated smoke builds (no publishing), while a single publisher workflow handles scheduled/manual (and optionally merge-triggered) full releases across Docker, NuGet, PyPI, and executables.
Changes:
- Replaces PR “test release” runs with a path-filtered smoke-build pipeline and a hardened required-status aggregator (
test-pull-request.yml). - Consolidates publishing into
publish-release.ymlwith a branch matrix (main + develop), global publish concurrency, opt-in publish-on-merge viaPUBLISH_ON_MERGE, and duplicate-release avoidance. - Threads
ref/branch/smokethrough reusable build tasks; branch-suffixes artifacts and scopes Docker registry cache per-branch to avoid matrix collisions.
Reviewed changes
Copilot reviewed 17 out of 17 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates template documentation to describe the new two-phase release model, opt-in publish-on-merge, and updated schedules/badges. |
| ProjectTemplate.slnx | Removes deleted workflows from solution items. |
| CodeGen/CodeGen.cs | Routine codegen timestamp update. |
| AGENTS.md | Documents the new release model and updated workflow/concurrency conventions and review loop mechanics. |
| .github/workflows/test-release-task.yml | Removes the old reusable “test release” workflow (superseded by PR unit-test + smoke-build). |
| .github/workflows/test-pull-request.yml | Implements path-gated smoke builds plus required-status aggregation for conditional jobs. |
| .github/workflows/run-periodic-codegen-pull-request.yml | Changes codegen schedule from weekly to daily (staggered vs. weekly publish). |
| .github/workflows/publish-release.yml | Becomes the sole publisher: schedule/dispatch publish both branches; push publishes only when PUBLISH_ON_MERGE=true; adds global concurrency and branch matrix. |
| .github/workflows/publish-periodic-docker-release.yml | Removes the old standalone periodic Docker publisher (consolidated into publish-release.yml). |
| .github/workflows/get-version-task.yml | Adds ref input and GitCommitId output to support matrix publishing and immutable release tagging. |
| .github/workflows/build-release-task.yml | Adds ref/branch/smoke and per-target enable gates; enforces “smoke never publishes”; pins releases to GitCommitId; skips duplicate GitHub releases. |
| .github/workflows/build-pypilibrary-task.yml | Adds ref/branch, branch-suffixed artifacts, and branch-driven PEP 440 prerelease logic for matrix publishing. |
| .github/workflows/build-nugetlibrary-task.yml | Adds ref/branch and branch-suffixed artifacts; uses branch-driven build configuration for matrix publishing. |
| .github/workflows/build-executable-task.yml | Adds ref/branch/smoke, reduces runtime matrix in smoke mode, and branch-suffixed artifacts/patterns for matrix publishing. |
| .github/workflows/build-docker-task.yml | Adds ref/branch/smoke, amd64-only smoke mode, branch-scoped buildcache, and branch-driven tagging/config. |
| .github/workflows/build-datebadge-task.yml | Adds branch input so badge writes only occur for main in a branch-matrix publish run. |
| .github/copilot-instructions.md | Updates the Copilot review runbook to document programmatic re-requesting via requestReviews. |
This PR updates the codegen files. Co-authored-by: ptr727-codegen[bot] <275599072+ptr727-codegen[bot]@users.noreply.github.com>
## Problem The dual-target codegen "byte-identical output" mechanism (#92) was silently broken. `run-codegen-pull-request-task.yml` passed `--runtime "${{ github.run_started_at }}"` to both matrix legs, but **`github.run_started_at` resolves to an empty string in this reusable-workflow context**. `CodeGenBuilder` falls back to `DateTime.UtcNow` when `--runtime` is empty, so each leg stamped its own wall-clock time — the `main` and `develop` legs diverged (observed ~5s apart), and `CodeGen.cs` differed between branches, reintroducing the exact `develop → main` release conflict the mechanism was meant to prevent. ## Fix Capture **one** UTC timestamp in a new `get-runtime` job and feed it to both matrix legs via `needs.get-runtime.outputs.runtime`. Both legs now receive an identical, non-empty value, so `CodeGen.cs` is byte-identical across branches again. Discovered while resolving the `CodeGen.cs` conflict on the develop→main release PR (#99). AGENTS.md updated to match. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
This PR updates the codegen files. Co-authored-by: ptr727-codegen[bot] <275599072+ptr727-codegen[bot]@users.noreply.github.com>
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.
Release merge of
developintomain.Headline change (#98, closes#97)
Two-phase CI/CD that decouples merging from publishing across all four delivery targets (Docker, NuGet, PyPI, console executable):
linux/amd64, trimmed executable matrix), no publish.publish-release.yml(weekly schedule + manual dispatch) builds/publishes both branches via a matrix; thepushtrigger publishes only when thePUBLISH_ON_MERGErepository variable istrue(opt-in legacy continuous-release). Default is two-phase.ref/branch/smoke, per-targetenable_*gates), branch-suffixed artifacts, branch-scoped Docker cache, hardened required-status aggregator.GitCommitId, global publish concurrency,cache-to/login gating reviewed.test-release-task.yml+publish-periodic-docker-release.ymlremoved.requestReviewsmutation) and made the wait-for-maintainer-merge gate explicit.Also includes routine codegen updates (#93, #95).
🤖 Generated with Claude Code