Skip to content

Conversation

@leggetter
Copy link
Collaborator

Introduce a contributing guide to assist developers in contributing to the Outpost SDKs.

@vercel
Copy link

vercel bot commented Oct 28, 2025

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

Project Deployment Preview Comments Updated (UTC)
outpost-docs Ready Ready Preview Comment Nov 17, 2025 6:18am
outpost-website Ready Ready Preview Comment Nov 17, 2025 6:18am

Copy link
Contributor

Copilot AI left a comment

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 introduces a comprehensive contributing guide for Outpost SDKs, documenting the complete workflow for updating, generating, testing, and publishing the Go, Python, and TypeScript SDKs. The guide emphasizes that SDK generation is a manual process and highlights critical testing considerations, particularly around the TypeScript SDK's local file dependency race condition.

Key Changes:

  • Establishes documentation for the SDK generation and publishing workflows
  • Details versioning guidelines (BETA and post-BETA strategies)
  • Documents critical testing procedures to avoid race conditions with the TypeScript SDK

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

```bash
cd spec-sdk-tests && rm -rf node_modules && npm install
```
3. Is Outpost running locally? Check `http://localhost:3333/healthz`
Copy link

Copilot AI Oct 28, 2025

Choose a reason for hiding this comment

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

Port mismatch: Line 273 shows Outpost running on port 8000 (curl http://localhost:8000/healthz), but this troubleshooting step references port 3333. The port should be consistent throughout the document.

Suggested change
3. Is Outpost running locally? Check `http://localhost:3333/healthz`
3. Is Outpost running locally? Check `http://localhost:8000/healthz`

Copilot uses AI. Check for mistakes.
go run cmd/outpost/main.go

# Verify Outpost is running
curl http://localhost:3333/healthz
Copy link

Copilot AI Oct 28, 2025

Choose a reason for hiding this comment

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

Port mismatch: This references port 3333, but line 273 shows Outpost running on port 8000. The port should be consistent throughout the document.

Suggested change
curl http://localhost:3333/healthz
curl http://localhost:8000/healthz

Copilot uses AI. Check for mistakes.
Copy link
Collaborator

@alexluong alexluong left a comment

Choose a reason for hiding this comment

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

Got a few issues here as I tried to follow the steps locally

Overall the guide makes sense. I wonder if a short TLDR in the beginning to give the full flow before going in-depth would be helpful.

flow:
- GHA to initiate SpeakEasy CI to generate new SDKs
-> PRs -> merge
-> GHA using SpeakEasy CI to publish SDK

- Select the branch (typically `main`)
- **Optional inputs**:
- `force`: Force generation even if no OpenAPI changes detected (default: false)
- `set_version`: Set a specific SDK version (e.g., `1.2.3`). Leave empty to keep current version
Copy link
Collaborator

Choose a reason for hiding this comment

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

  1. Should the version start with v or not? v1.2.3 vs 1.2.3
  2. Do we try to keep the SDK version matching Outpost version?

@leggetter
Copy link
Collaborator Author

@alexluong - any chance you could edit the changes you know are wrong and leave anything you need clarification on?

@fmvilas fmvilas moved this to Todo in Outpost Releases Nov 7, 2025
@fmvilas fmvilas moved this from Todo to In Review in Outpost Releases Nov 7, 2025

Outpost SDKs are automatically generated from the [OpenAPI specification](../docs/apis/openapi.yaml) using [Speakeasy](https://www.speakeasyapi.dev/). The SDK generation, testing, and publishing process is managed through GitHub Actions workflows, but requires manual triggering and careful coordination to ensure quality.

**Key Point**: SDK generation is a **manual process** that requires explicit workflow triggering and version management. This is intentional to maintain control over releases.
Copy link

Choose a reason for hiding this comment

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

Why is this? I mean, what would be wrong with releasing one version per each merged PR?

Copy link
Collaborator Author

Choose a reason for hiding this comment

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

The current phrasing is misleading - it's not that manual control is intentionally better, it's that we just haven't fully thought through what complete automation looks like and gotten around to implementing it.

We could instead:

  1. Automatically trigger SDK generation when Outpost releases are published (we already have the release.yml workflow)
  2. Only generate SDKs if docs/apis/openapi.yaml has changed since the last release
  3. Let Speakeasy handle versioning automatically (it detects breaking vs non-breaking changes), testing and releasing

Right now we don't auto-generate or version the OpenAPI spec.

Related: there's presently no checking that the OpenAPI spec is correct and we have had some bugs raised. However, there is the start of a test suite that generates the TS SDK, and makes calls to the API, then the TS SDK validates the responses.

Copy link

Choose a reason for hiding this comment

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

That's actually great news, @leggetter. I've created this issue to make sure we don't forget: #559.

@alexluong
Copy link
Collaborator

@leggetter sorry for the delay, I fixed all the issues identified, just had a question left and we can merge this PR whenever!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

4 participants