Skip to content

feat: tag-triggered SDK generation and release docs - #738

Merged
leggetter merged 6 commits into
mainfrom
chore/sdk-gen-help
Mar 10, 2026
Merged

feat: tag-triggered SDK generation and release docs#738
leggetter merged 6 commits into
mainfrom
chore/sdk-gen-help

Conversation

@leggetter

@leggetter leggetter commented Mar 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Implements tag-triggered SDK generation and centralizes release documentation. Also includes Speakeasy gen.yaml and example updates that align SDK request body naming and method arguments across Go, Python, and TypeScript.

Changes

Workflows

  • sdk-generate-on-release.yml (new): Runs when a version tag (v*) is pushed. Generates Go, Python, and TypeScript SDKs sequentially (to avoid conflicts on .speakeasy/workflow.lock) and opens three PRs. Supports workflow_dispatch for testing without pushing a tag. Passes SDK version override only when tag is v1.0.0.
  • sdk-generate-one.yml (new): Reusable workflow that runs Speakeasy for one target. Used by both the manual per-language workflows and the tag-triggered workflow so behaviour lives in one place.
  • sdk_generation_outpost_go/python/ts.yaml: Refactored to call sdk-generate-one.yml; manual workflow_dispatch with force and set_version inputs unchanged.

Speakeasy SDK configuration (breaking API surface)

  • All three SDKs (gen.yaml): requestBodyFieldName changed from params to body — generated request types now use a body parameter instead of params. This is a breaking change for call sites that pass request payloads.
  • Python SDK only: flattenRequests: false, maxMethodParams: 4, methodArguments: require-security-and-request (aligns with Go and TypeScript). Method signatures may change.
  • examples/sdk-python: create_destination.py updated to use body= instead of destination_create= to match the new naming.

Documentation

  • contributing/release.md (new): Primary release playbook — tag-first process, merge SDK PRs before creating the release, tag stays on original commit, checklist, and testing instructions.
  • CONTRIBUTING.md: Added links to "Release process" and "SDKs" in Contribution Guides.
  • contributing/sdks.md: Lock file documentation (sequential runs, three PRs per tag), "Outpost release and SDK generation" section, reusable workflow note, and updated Overview/Key Point (automatic on tag push, manual also available).

Testing

  • Push a temporary tag (e.g. v0.0.0-sdk-gen-test) or use Actions → SDK generate on release tag → Run workflow to verify without a real release.
  • Manual "Generate OUTPOST-GO / OUTPOST-PYTHON / OUTPOST-TS" still work and accept set_version as before.
  • Python example: body parameter as in updated create_destination.py.

claude and others added 3 commits March 6, 2026 15:57
…itional params in Python

- Change `requestBodyFieldName` from `params` to `body` across all three SDKs
- Switch Python SDK to `flattenRequests: false`, `maxMethodParams: 4`,
  `methodArguments: require-security-and-request` to match Go/TS style
  with positional path params and a named `body=` keyword argument

Expected Python signatures after regeneration:
  outpost.destinations.create("t1", body=DestinationCreate(...))
  outpost.destinations.update("t1", "d1", body=DestinationUpdate(...))

https://claude.ai/code/session_018pZ8NkJ3QqwPR8Aa7QD1eF
… 0.13.2

destinations.create() now takes body= (not destination_create=) after
requestBodyFieldName: body in gen.yaml.

Made-with: Cursor
- Add sdk-generate-on-release.yml: generates Go, Python, TS on push tags v*
- Add sdk-generate-one.yml: reusable workflow used by manual and tag-triggered runs
- Refactor manual sdk_generation_outpost_* workflows to call sdk-generate-one
- Add contributing/release.md as primary release playbook (checklist, 1.0.0 override)
- Update CONTRIBUTING.md with Release process and SDKs links
- Update contributing/sdks.md: lock file doc, release section, reusable workflow note

Made-with: Cursor
Copilot AI review requested due to automatic review settings March 9, 2026 11:25
@vercel

vercel Bot commented Mar 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
outpost-docs Ready Ready Preview, Comment Mar 10, 2026 2:39pm
outpost-website Ready Ready Preview, Comment Mar 10, 2026 2:39pm

Request Review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR implements tag-triggered SDK generation and centralizes release documentation. It introduces two new GitHub Actions workflows (a reusable single-target generator and a tag-triggered orchestrator), refactors the three existing per-language manual workflows to use the shared reusable workflow, adds release process documentation, and updates Speakeasy SDK configuration across all three SDKs.

Changes:

  • New reusable workflow (sdk-generate-one.yml) and tag-triggered orchestrator (sdk-generate-on-release.yml) that automatically generates Go, Python, and TypeScript SDKs sequentially when a v* tag is pushed, with the manual per-language workflows refactored to call the shared reusable workflow.
  • Speakeasy gen.yaml configuration changes across all three SDKs: requestBodyFieldName changed from params to body, and the Python SDK additionally gets flattenRequests: false, maxMethodParams: 4, and methodArguments: require-security-and-request (aligning with Go and TypeScript).
  • New contributing/release.md release playbook and updated contributing/sdks.md with lock file documentation, tag-triggered generation details, and updated key point; CONTRIBUTING.md updated with links.

Reviewed changes

Copilot reviewed 12 out of 12 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
.github/workflows/sdk-generate-one.yml New reusable workflow wrapping Speakeasy's action for one SDK target
.github/workflows/sdk-generate-on-release.yml New orchestrator workflow triggered by v* tags, runs Go → Python → TS sequentially
.github/workflows/sdk_generation_outpost_go.yaml Refactored to call sdk-generate-one.yml instead of Speakeasy directly
.github/workflows/sdk_generation_outpost_python.yaml Refactored to call sdk-generate-one.yml instead of Speakeasy directly
.github/workflows/sdk_generation_outpost_ts.yaml Refactored to call sdk-generate-one.yml instead of Speakeasy directly
sdks/outpost-go/.speakeasy/gen.yaml requestBodyFieldName changed from params to body
sdks/outpost-python/.speakeasy/gen.yaml requestBodyFieldNamebody, flattenRequestsfalse, maxMethodParams4, methodArgumentsrequire-security-and-request
sdks/outpost-typescript/.speakeasy/gen.yaml requestBodyFieldName changed from params to body
examples/sdk-python/example/create_destination.py Updated parameter name from destination_create to body to match gen.yaml change
contributing/release.md New release process playbook
contributing/sdks.md Updated with lock file documentation and tag-triggered generation details
CONTRIBUTING.md Added links to release process and SDKs guides

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

Comment thread contributing/sdks.md
Comment thread sdks/outpost-python/.speakeasy/gen.yaml
…iginal commit

- Order: tag → workflows → merge SDK PRs → create GitHub Release
- Remove optional 'move the tag' step; document that we do not rewrite the tag
- Clarify that release is created after SDKs are generated and merged

Made-with: Cursor
@vercel
vercel Bot temporarily deployed to Preview – outpost-docs March 9, 2026 12:32 Inactive
@vercel
vercel Bot temporarily deployed to Preview – outpost-website March 9, 2026 12:32 Inactive
@vercel
vercel Bot temporarily deployed to Preview – outpost-docs March 9, 2026 13:08 Inactive
@vercel
vercel Bot temporarily deployed to Preview – outpost-website March 9, 2026 13:08 Inactive
@vercel
vercel Bot temporarily deployed to Preview – outpost-website March 10, 2026 14:38 Inactive
@vercel
vercel Bot temporarily deployed to Preview – outpost-docs March 10, 2026 14:39 Inactive
@leggetter
leggetter merged commit 690f77b into main Mar 10, 2026
4 checks passed
@leggetter
leggetter deleted the chore/sdk-gen-help branch March 10, 2026 14:39
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.

3 participants