Repository navigation
Wait up to 5.5 hours for reviewer-approved publishes before the GitHub Release - #264
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🔵 Needs a closer look
No defects were identified, but the explicit merge hold awaits Jeremy’s clearance.
No open issues 🎉
What changed in this PR
Extends the GitHub Release wait to accommodate reviewer-approved registry publishes.
Changes:
- Raises the orchestrator timeout to 5.5 hours.
- Sets the job timeout to 340 minutes, leaving 10 minutes for setup and completion.
[!TIP]
If you aren't ready for review, convert to a draft PR.
Click "Convert to draft" or rungh pr ready --undo.
Click "Ready for review" or rungh pr readyto reengage.
| File | Description |
|---|---|
.github/workflows/release-github.yml |
Extends orchestrator and job timeouts for approval-gated publishes. |
Review effort: Balanced
|
@codex review |
|
Codex Review: Didn't find any major issues. Bravo. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
Codex Review: Didn't find any major issues. Nice work! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
…se-crates' docs The shared orchestrator lists each language's runs separately, one or two requests apiece per poll; over a 5.5-hour approval wait that outruns GITHUB_TOKEN's quota. A step ahead of it now waits with one actions/runs?head_sha= request per poll, matched by workflow path with any @ref suffix stripped, retrying a failed listing on the next poll. The shared action then takes one pass to report and create the release. CONTRIBUTING.md and release-rust.yml said release-crates has no required reviewers; it requires sip or cli.
Each poll's request and jq add to the 30s sleep, so a counter of sleeps alone ran past 5.5 hours and could reach the job's 340-minute limit before the shared action reported. SECONDS measures the wall clock.
|
@codex review |
|
Codex Review: Didn't find any major issues. You're on a roll. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
#264 landed a 5.5-hour wait step ahead of release-orchestrate and gave the orchestrator timeout '1'. Rebased onto it, this branch's timeout: '19800' became a second timeout key in the same with: block, which actionlint (GitHub Actions audit) rejects. release-github.yml is now main's copy. actionlint passes on the three release workflows.
#264 landed a 5.5-hour wait step ahead of release-orchestrate and gave the orchestrator timeout '1'. Rebased onto it, this branch's timeout: '19800' became a second timeout key in the same with: block, which actionlint (GitHub Actions audit) rejects. release-github.yml is now main's copy. actionlint passes on the three release workflows.
#246) * Wait for a reviewer before tagging the Go module and publishing Kotlin * Leave the go/ module tag to the approved release job make release tagged and pushed go/vX.Y.Z beside vX.Y.Z, so the module was resolvable through proxy.golang.org before the release-go reviewer approved, and release-go.yml's tag job found the tag already there. make release now pushes vX.Y.Z alone; release-go.yml's tag job, behind the release-go environment, creates go/vX.Y.Z. CONTRIBUTING says so. The release workflow test now asserts no go/ tag and a push of vX.Y.Z alone; it failed on that assertion against the old Makefile and passes now (run with #266's PATH fix applied locally, which macOS needs). Keeping the local go/ tag and moving the approval elsewhere was rejected: the proxy serves a tag the moment it exists. * Drop the orchestrator timeout that main's wait step already covers #264 landed a 5.5-hour wait step ahead of release-orchestrate and gave the orchestrator timeout '1'. Rebased onto it, this branch's timeout: '19800' became a second timeout key in the same with: block, which actionlint (GitHub Actions audit) rejects. release-github.yml is now main's copy. actionlint passes on the three release workflows.

Held: don't merge until Jeremy says so. This is the hey-sdk equivalent of basecamp/fizzy-sdk#201.
release-github.ymlnow waits up to 5.5 hours for the release workflows, instead of the shared orchestrator's 30 minutes, becauserelease-cratesandrelease-npmrequire a reviewer from sip or cli. It ports basecamp/fizzy-sdk#201's approach (at 8896f5e).Why:
release-crates(andrelease-npm, once TypeScript publishes) require approval now (sip or cli, with self-review prevented), butrelease-github.ymlcalledbasecamp/sdk/actions/release-orchestratewith its defaulttimeout: 1800. An approval that came after 30 minutes failed the GitHub release even though the crate published.What changes
actions/runs?head_sha=<tagged commit>&event=push. The shared action makes one or twogh run listrequests per language per poll. Over hours that outrunsGITHUB_TOKEN's 1,000 requests an hour.pathwith any@refsuffix stripped, plushead_branch == <tag>, newest first.timeout-minutes: 340.timeout: '1'andpoll-interval: '1', so it takes a single pass after the wait. Release creation (--generate-notes --latest), the failure summary and the recovery advice stay shared with the other SDK repos. Nothing else about it changes.GITHUB_SHA. That keepsgh workflow run release-github.yml -f tag=vX.Y.Zworking as the recovery path. fizzy-sdk#201 skips the wait on dispatch; hey-sdk's dispatch already relies on the shared action seeing the tag's push runs, so this keeps that.release-rust.ymlcomment saidrelease-crateshas "no required reviewers". They now say what it is: approval by sip or cli, not by whoever pushed the tag, and that a late approval needs a re-run of the orchestrator.Not in this PR
release-go,release-npmandrelease-github-packagesalready exist with the same reviewers and the samev*policy, but no workflow referencesrelease-goorrelease-github-packagesyet. Gating the Go module tag and the Kotlin publish the way fizzy-sdk does is a separate change.release-npmis used, but TypeScript publishing is off (.github/typescript-publish-enabledisfalse).Verified
actionlintandzizmor --offlinefind nothing inrelease-github.yml.jqagainst the real runs forv0.32.1. All five release workflows matched assuccess, and themainpush runs on the same commit were ignored.typescript/tests/release-workflow.test.ts's assertions onrelease-github.ymlstill hold:workflow_sha,release-languages.shand thelanguages:input are unchanged.History
The first two commits raised the shared action's
timeoutto 19800 and itspoll-intervalto 60. The third commit replaces those two settings with the single-request wait above and fixes the docs. It also supersedes #265, which I've closed.