Skip to content

Ci/align release gate - #8

Merged
sbokatuk merged 2 commits into
mainfrom
ci/align-release-gate
Jul 28, 2026
Merged

Ci/align release gate#8
sbokatuk merged 2 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
sbokatuk merged commit 4c1f730 into main Jul 28, 2026
7 checks passed
@sbokatuk
sbokatuk deleted the ci/align-release-gate branch July 28, 2026 14:58
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.

1 participant