Skip to content

Commit 4bacf63

Browse files
authored
ci(docs): dispatch convoy-go, convoy.rb and convoy-php SDK generation (#2740)
* ci(docs): dispatch convoy-go, convoy.rb and convoy-php SDK generation adds the three repos to the trigger-sdk-repos matrix. each repo owns its generator behind the shared sdk_generation.yaml filename and inputs (convoy-go: oapi-codegen; convoy.rb / convoy-php: OpenAPI Generator). SDK_REPOS_PAT must cover the new repos. * docs: extend SDK client doc for go, ruby and php generation
1 parent dc84952 commit 4bacf63

2 files changed

Lines changed: 24 additions & 13 deletions

File tree

.github/workflows/speakeasy-sdk.yml

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
name: Speakeasy SDK regeneration
22

33
# When public OpenAPI artifacts change on main (or via manual dispatch), kick
4-
# SDK generation in convoy.js / convoy-python / convoy-java. SDK repos pull
5-
# docs/v3/openapi3.yaml from this repository. Each repo owns its generator
6-
# (convoy.js: Speakeasy; convoy-python: openapi-python-client; convoy-java:
7-
# OpenAPI Generator) behind the same sdk_generation.yaml filename and inputs.
4+
# SDK generation in the SDK repos (see the trigger-sdk-repos matrix). SDK
5+
# repos pull docs/v3/openapi3.yaml from this repository. Each repo owns its
6+
# generator (convoy.js: Speakeasy; convoy-python: openapi-python-client;
7+
# convoy-go: oapi-codegen; convoy-java / convoy.rb / convoy-php: OpenAPI
8+
# Generator) behind the same sdk_generation.yaml filename and inputs.
89
#
910
# Required repository secrets:
1011
# SPEAKEASY_API_KEY — Speakeasy workspace API key (also required on convoy.js)
1112
# SDK_REPOS_PAT — GitHub PAT (or fine-grained token) that can
12-
# workflow_dispatch and open/edit PRs on
13-
# frain-dev/convoy.js, frain-dev/convoy-python and
14-
# frain-dev/convoy-java
13+
# workflow_dispatch and open/edit PRs on every repo in
14+
# the trigger-sdk-repos matrix (convoy.js,
15+
# convoy-python, convoy-java, convoy-go, convoy.rb,
16+
# convoy-php)
1517

1618
on:
1719
push:
@@ -99,6 +101,12 @@ jobs:
99101
repo: convoy-python
100102
- language: java
101103
repo: convoy-java
104+
- language: go
105+
repo: convoy-go
106+
- language: ruby
107+
repo: convoy.rb
108+
- language: php
109+
repo: convoy-php
102110
steps:
103111
- name: Prepare feature branch
104112
id: branch

docs/md/SPEAKEASY_SDK.md

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,18 @@ pattern, per-language generator picks:
88
| `convoy.js` | [Speakeasy](https://www.speakeasy.com/) (free tier) | Free tier allows exactly one generated SDK per workspace; JS holds the slot |
99
| `convoy-python` | [openapi-python-client](https://github.com/openapi-generators/openapi-python-client) (OSS, pinned) | Speakeasy slot taken; OSS output proven idiomatic and complete. Speakeasy pipeline kept dormant in-repo for a provider switch |
1010
| `convoy-java` | [OpenAPI Generator](https://openapi-generator.tech/) (OSS, pinned; `java`/`native` library) | Same OSS pattern as Python; native `java.net.http` + Jackson, no framework deps |
11+
| `convoy-go` | [oapi-codegen](https://github.com/oapi-codegen/oapi-codegen) (OSS, pinned) | Go-native generator; single-file `client/` subpackage beside the hand-written client |
12+
| `convoy.rb` | OpenAPI Generator (OSS, pinned; `ruby`) | Generated `ConvoyApi` namespace beside the hand-written `Convoy` gem code |
13+
| `convoy-php` | OpenAPI Generator (OSS, pinned; `php`) | Generated `Convoy\Client` namespace under `src/Client/` beside the hand-written SDK |
1114

1215
## Scope
1316

1417
| Surface | Ownership |
1518
| --- | --- |
16-
| Public API client (JS, Python, Java) | Generated from OpenAPI |
19+
| Public API client (JS, Python, Java, Go, Ruby, PHP) | Generated from OpenAPI |
1720
| Webhook signature verify | **Hand-written** in every language (`signature-vectors.json`) |
1821
| Dashboard `/ui` auth/billing/org | Out of scope for PDE-755 |
1922

20-
Follow-up tickets cover Go / Ruby / PHP API codegen (Go candidate:
21-
`oapi-codegen`; Ruby/PHP deferred until demand signal).
22-
2323
## Pipeline
2424

2525
```text
@@ -28,6 +28,9 @@ Follow-up tickets cover Go / Ruby / PHP API codegen (Go candidate:
2828
convoy.js: Speakeasy action → regen PR
2929
convoy-python: openapi-python-client → regen PR (only on diff)
3030
convoy-java: OpenAPI Generator → regen PR (only on diff)
31+
convoy-go: oapi-codegen → regen PR (only on diff)
32+
convoy.rb: OpenAPI Generator → regen PR (only on diff)
33+
convoy-php: OpenAPI Generator → regen PR (only on diff)
3134
signature-vectors.json → hand-written verify tests (unchanged)
3235
```
3336

@@ -47,8 +50,8 @@ and inputs (`force`, `feature_branch`); each repo owns its generator.
4750
| Secret | Where | Purpose |
4851
| --- | --- | --- |
4952
| `SPEAKEASY_API_KEY` | `convoy`, `convoy.js` | Speakeasy generation (JS only now) |
50-
| `SDK_REPOS_PAT` | `convoy` | Dispatch workflows / open PRs on SDK repos |
51-
| `SDK_BOT_PAT` | `convoy.js`, `convoy-python`, `convoy-java` | Open generation PRs so verify CI triggers — PRs opened with `GITHUB_TOKEN` do not fire `pull_request` workflows. Can be the same fine-grained token as `SDK_REPOS_PAT` (which must also cover `convoy-java`). |
53+
| `SDK_REPOS_PAT` | `convoy` | Dispatch workflows / open PRs on every SDK repo in the matrix |
54+
| `SDK_BOT_PAT` | every SDK repo (`convoy.js`, `convoy-python`, `convoy-java`, `convoy-go`, `convoy.rb`, `convoy-php`) | Open generation PRs so verify CI triggers — PRs opened with `GITHUB_TOKEN` do not fire `pull_request` workflows. Can be the same fine-grained token as `SDK_REPOS_PAT` (which must cover all matrix repos). |
5255

5356
## Speakeasy plan limit
5457

0 commit comments

Comments
 (0)