Add publish-v1-specs workflow - #195
Open
zacchua-stripe wants to merge 3 commits into
Open
Conversation
Adds a workflow_dispatch workflow that publishes v1 private-preview specs for a given API version and cuts a release, mirroring the private-preview (beta) path of pay-server's api-codegen/tools/publish.sh. It pulls the specs from the Statics Commander CDN (instead of a local build dir), commits them to master, generates per-language diffs against the private-preview spec, and tags the release. Triggered by the zoolander LockAndReleasePrivatePreviewSpecs workflow. A dry_run input (default true) fetches, builds, and diffs without pushing, uploading the would-be output as an artifact for inspection. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Committed-By-Agent: claude
- Diff the GA spec (openapi/spec3.sdk.yaml), old-tag vs. working tree, exactly as publish.sh's beta path does, instead of the private-preview spec. - In dry-run, force-push local commits to a disposable dry-run/private-preview branch for inspection instead of uploading an artifact; never create or push a tag (a stray vN would corrupt the next real run's describe increment). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Committed-By-Agent: claude
zacchua-stripe
commented
Aug 21, 2026
zacchua-stripe
commented
Aug 21, 2026
Adds a `mode` choice input (private-preview / public-preview / GA / all). Only private-preview is implemented; the other channels fail fast at a new "Resolve mode configuration" step until the zoolander dispatcher and CDN keys for them are wired up. Mode-specific values (CDN subpath, spec/fixture filenames, commit and tag messages, dry-run branch) are resolved into env vars so the download and release steps stay mode-agnostic. Dry-run branch is now dry-run/<mode>. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Committed-By-Agent: claude
zacchua-stripe
marked this pull request as ready for review
August 21, 2026 18:28
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.
What
Follow up to https://docs.google.com/document/d/1RH_6VhWlPGnBX17bwu1WWXCaBjDO3CtKqg7nfRdLS8o/edit?tab=t.0. This PR adds
.github/workflows/publish-v1-specs.ymla workflow that sits downstream of theLockAndPublishPrivatePreviewSpecs, pulls the specs from the CDN and publishes v1 private-preview specs for a given API version.It is functionally equivalent to the private-preview (
beta) path of pay-server'sapi-codegen/tools/publish.sh. The difference is that specs are pulled from the CDN instead of a local build dir.How it works
openapiwith full history + tags.stripe/sdk-codegen@v17.0.0+just+ Node 24 to provide thediffCLI.openapi/.rest.md+ 7 per-language diffs, commitsupcoming-changes/, tagsvN, and pushes atomically.dry_run
A
dry_runinput (defaulttrue) fetches, builds, and diffs but does not touchmasteror tags. Instead it force-pushes the local commits to a disposable branch so you can inspect exactly what a real run would commit. Tags are never created/pushed in a dry run.Context
Triggered by the zoolander
LockAndReleasePrivatePreviewSpecsworkflow, which currently dispatchesstripe/openapiunder aPLACEHOLDER_WORKFLOW_NAME. Swapping that placeholder for this workflow's filename is a separate, follow-up mint PR.Note: a full end-to-end test requires a dry-run zoolander run to first publish a version to the CDN.