Skip to content

Ci/align release gate - #6

Merged
sbokatuk merged 10 commits into
mainfrom
ci/align-release-gate
Jul 29, 2026
Merged

sbokatuk merged 10 commits into
mainfrom
ci/align-release-gate

Conversation

@sbokatuk

Copy link
Copy Markdown
Owner

No description provided.

sbokatuk and others added 2 commits July 28, 2026 16:56
Every repository already had the same skeleton — a version job, a reusable
build.yml, a publish job — but five different ways of telling build.yml "this
is a release, the checks already ran". Net.Agora used `track != ""`, the
Datadog and OpenTok repos used `build-sample` and `verify-release`, Red5Pro
inverted its `run-live-tiers` knob, and six repositories had no gate at all
and re-ran the entire pull-request pipeline on every tag.

Replaces all of it with one boolean input, `verify`, with the same name,
default and meaning everywhere. Pull requests leave it true and are the only
place verification runs; release.yml passes false. Across the eighteen
repositories that takes the build jobs a tag runs from 59 to 23 — the 23 being
pack, its prerequisites, and OpenTok.Net's add-windows-assets, which merges the
Windows heads into the packages being published and so is not a check.

The same rule now applies whether a check is a job or a step: the package
tests and sample compiles that lived inside pack jobs are gated too, since
where a check happened to be written should not decide whether it repeats.
Checks on the pins a pack consumed, or on the bytes it emitted, still run on a
release — they are cheap and they guard the artifact about to be published.

Skipping verification on a tag is only sound if the tagged commit really did
go through a pull request, so release.yml gains a guard job that fails when
the commit is not an ancestor of the default branch. OpenTok.Net.Android and
OpenTok.Net.iOS also gain the tag-versus-Directory.Build.props check their
sibling OpenTok.Net.Win already had.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The tag was the only manual step left. A release note is already written by
hand, one per version, as part of the pull request that bumps the pins — so
merging that note is the decision to release, and everything after it was
mechanical: cut a tag whose name has to match the note's filename exactly, and
push it.

auto-release.yml does that. On a push to the default branch touching
docs/release-notes/**, it takes the notes the push ADDED (not modified —
editing an old note is a correction, not a release), derives each tag from the
filename, and tags the merge commit. Two filename conventions, matching what
each repository already does: bare version here, so 2.34.1.4.md tags v2.34.1.4.

It then dispatches release.yml at the new tag rather than relying on the tag
push to trigger it. That is not a stylistic choice: a tag pushed with
GITHUB_TOKEN deliberately does not fire `on: push: tags`, so release.yml would
never start. workflow_dispatch is documented as an exception that always
creates a run, so release.yml gains a workflow_dispatch trigger; dispatched at
the tag's ref, github.ref_name is the tag and every version, track, notes and
changelog lookup in there behaves exactly as it does today.

Stricter than the manual path on purpose. release.yml accepts a three-part
version; this accepts only four parts, because every release tag any of these
repositories has carried is four-part while the three-part notes that exist
(2.17.2.md, 8.1.7.md, 8.1.2.md) are series overviews. Replayed over every
commit that ever added a note: 77 resolve to the tag that actually exists,
and the only rejections are those three overviews. Re-running is a no-op —
a tag that already exists is skipped.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sbokatuk

Copy link
Copy Markdown
Owner Author

@copilot rebase on main branch

Copilot AI commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

@copilot rebase on main branch

Branch is now up to date with main (3355666). I rebased locally first, but the push path replays remote commits onto the branch, which left main off the ancestry and made the PR diff include main's Windows-asset commits; a merge of origin/main fixes that, so the PR diff is again just the three workflow files. No conflicts, and the workflows still parse.

@sbokatuk
sbokatuk merged commit 634e406 into main Jul 29, 2026
12 checks passed
@sbokatuk
sbokatuk deleted the ci/align-release-gate branch July 29, 2026 11:11

This branch was previously deployed

1 inactive deployment
nuget.org — 33556669 Deployed Jul 29, 2026 by Copilot via publish beta to nuget.org #27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants