Skip to content

Tags: hookdeck/outpost

Tags

v1.0.4

Toggle v1.0.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
ci(spec-sdk-tests-vs-release): test PR's SDK against latest released …

…Outpost (#927)

* ci(spec-sdk-tests-vs-release): test PR's SDK against latest released Outpost

Closes #926.

Trigger: PRs touching sdks/outpost-typescript/** (where the Speakeasy
bot regen PRs land). Resolves the latest non-prerelease Outpost tag
dynamically via the GitHub releases API (the repo uses namespaced tags
like sdks/outpost-typescript/v1.3.0 for SDK releases, so the bare
vX.Y.Z pattern correctly picks out the Outpost release).

Question this answers: "Will the newly-regen'd SDK in this PR work
against the version of Outpost that customers are already running?"
Distinct from the existing spec-sdk-tests.yml workflow which asks
"does this PR's spec match this PR's server" — both are needed, neither
subsumes the other.

Job shape: pull hookdeck/outpost:<tag> as a docker image, run it
alongside the same service containers as the sibling workflow
(Postgres, redis-stack-server for RediSearch, RabbitMQ), build the
SDK from the PR with no regen step (the regen IS the PR), run the
contract suite.

Not dogfooded on this PR — the trigger filter only matches SDK paths,
which this PR doesn't touch. First real run will be on the next
Speakeasy bot regen PR after this lands.

* ci(spec-sdk-tests-vs-release): support sdk_version + outpost_version dispatch overrides

Lets you trigger the workflow from the Actions UI with optional inputs
for ad-hoc compat testing:
  sdk_version     pins the SDK to a specific release tag (or uses the
                  dispatch branch's contents if empty).
  outpost_version pins the server to a specific Outpost release (or
                  resolves the latest non-prerelease release if empty).

Both accept "1.3.0" or "v1.3.0" — leading "v" is normalized.

Inputs only affect workflow_dispatch runs; pull_request triggers
ignore them, so the gate behaviour for bot regen PRs is unchanged.

Single workflow rather than a sibling file — the job body is ~95%
identical between PR gate and compat testing; the only material
differences are two variables (which SDK, which Outpost).

* ci(spec-sdk-tests-vs-release): guard inputs.* references with workflow_dispatch event check

Defensive pattern flagged by Copilot review on #927: inputs.* context
is officially only populated on workflow_dispatch (and workflow_call).
Practically this works on PR events too — inputs.x evaluates to null
which compares as empty — but the explicit guard is unambiguous and
costs almost nothing.

Two changes:
* OVERRIDE env in the tag resolver uses the short-circuit ternary
  (github.event_name == 'workflow_dispatch' && inputs.x || '').
* SDK override step's if: prepends event_name == 'workflow_dispatch'
  so the inputs.sdk_version check is only evaluated on dispatch runs.

* ci(spec-sdk-tests-vs-release): don't self-trigger on workflow file edits

PRs that touch only this workflow file would fire it against main's
state — currently NEW tests + OLD SDK (regen still pending) + OLD
released Outpost — and fail at TS compile with 'type does not exist
in type DestinationUpdate'. That's predicted transitional-state noise,
not a real bug, but it leaves a permanently-red dogfood result that
future reviewers have to recognize as expected.

Drop the workflow file from its own trigger paths. The actual scenario
this workflow exists for — Speakeasy bot regen PRs — always touches
sdks/outpost-typescript/**, so the gate still catches them. Local
iteration on the workflow file itself uses 'gh workflow run --ref'.

Spotted while inspecting failing PR runs on #927.

sdks/outpost-typescript/v1.4.0

Toggle sdks/outpost-typescript/v1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-TS 1.4.0 (#938)

* `outpost.destinations.update()`:  `request.body` **Changed** (Breaking ⚠️)

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-python/v1.4.0

Toggle sdks/outpost-python/v1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-PYTHON 1.4.0 (#937)

* `outpost.destinations.update()`:  `request.body` **Changed** (Breaking ⚠️)

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-go/v1.4.0

Toggle sdks/outpost-go/v1.4.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-GO 1.4.0 (#935)

* `Outpost.Destinations.Update()`:  `request.Body` **Changed** (Breaking ⚠️)

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

v1.0.3

Toggle v1.0.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: increase consumer error tolerance for transient infra outages (#900

)

Previously the consumer gave up after 5 consecutive receive errors with
a 5s backoff cap (~3s total tolerance), permanently killing the worker
with no recovery path. A brief broker hiccup (e.g. GCP OAuth/DNS blip,
managed broker restart) was enough to take down logmq/deliverymq workers
across deployments until containers were manually restarted.

Mirrors the same fix applied to the retrymq scheduler in #881. Increase
to 10 errors with 15s backoff cap (~1 min tolerance window).

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

sdks/outpost-typescript/v1.3.0

Toggle sdks/outpost-typescript/v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-TS 1.3.0 (#905)

* `outpost.destinations.create()`:  `request.body` **Changed**
* `outpost.destinations.update()`:  `request.body` **Changed**

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-python/v1.3.0

Toggle sdks/outpost-python/v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-PYTHON 1.3.0 (#904)

* `outpost.destinations.create()`:  `request.body` **Changed**
* `outpost.destinations.update()`:  `request.body` **Changed**

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-go/v1.3.0

Toggle sdks/outpost-go/v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-GO 1.3.0 (#902)

* `Outpost.Destinations.Create()`:  `request.Body` **Changed**
* `Outpost.Destinations.Update()`:  `request.Body` **Changed**

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-typescript/v1.2.0

Toggle sdks/outpost-typescript/v1.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-TS 1.2.0 (#893)

* `outpost.publish()`: **Added**
* `outpost.retry()`: **Added**
* `outpost.publish.event()`: **Removed** (Breaking ⚠️)
* `outpost.retry.retry()`: **Removed** (Breaking ⚠️)

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>

sdks/outpost-typescript/v1.1.0

Toggle sdks/outpost-typescript/v1.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
chore: 🐝 Update SDK - Generate OUTPOST-TS 1.1.0 (#888)

* `outpost.destinations.create()`: 
  *  `request.body.union(kafka)` **Added**
  *  `response.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.destinations.disable()`:  `response.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.events.list()`:  `request` **Changed** (Breaking ⚠️)
* `outpost.attempts.list()`: 
  *  `request` **Changed** (Breaking ⚠️)
  *  `response.models[].destination.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.attempts.get()`:  `response.destination.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.destinations.list()`:  `response.[].union(kafka)` **Added** (Breaking ⚠️)
* `outpost.metrics.getAttemptMetrics()`:  `request` **Changed** (Breaking ⚠️)
* `outpost.destinations.update()`: 
  *  `request.body.union(DestinationUpdateKafka)` **Added**
  *  `response.union(Destination).union(kafka)` **Added** (Breaking ⚠️)
* `outpost.metrics.getEventMetrics()`:  `request` **Changed** (Breaking ⚠️)
* `outpost.destinations.enable()`:  `response.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.destinations.get()`:  `response.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.destinations.listAttempts()`: 
  *  `request` **Changed** (Breaking ⚠️)
  *  `response.models[].destination.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.destinations.getAttempt()`:  `response.destination.union(kafka)` **Added** (Breaking ⚠️)
* `outpost.retry.retry()`: **Added**
* `outpost.attempts.retry()`: **Removed** (Breaking ⚠️)

Co-authored-by: speakeasybot <bot@speakeasyapi.dev>