Skip to content

ci(release): gate mark-latest and web deploy on PyPI publish#66

Merged
lukeocodes merged 1 commit intomainfrom
chore/release-flow-post-publish
May 8, 2026
Merged

ci(release): gate mark-latest and web deploy on PyPI publish#66
lukeocodes merged 1 commit intomainfrom
chore/release-flow-post-publish

Conversation

@lukeocodes
Copy link
Copy Markdown
Member

Summary

Move `mark-latest` and the cli.deepgram.com production deploy downstream of `publish` so they run in parallel with `bump-brew-formula` instead of in parallel with `build` / `test` / `publish`.

Why

PyPI is the gating artifact for everything that follows a release. Today:

  • `mark-latest` could flip the "latest" pointer on a tag whose PyPI artifact hadn't been published yet — a user clicking "latest" would land on a 404.
  • `deploy-web` could ship a new cli.deepgram.com banner advertising `pip install deepctl@X.Y.Z` before that version existed on PyPI.
  • `bump-brew-formula` was already correctly downstream of `publish` (it needs the published SHA).

Now all three downstream-of-publish jobs share the same correctness invariant: nothing promotes a release until PyPI says it exists.

Job graph

Before:

```
release-please ─┬─> build ─> test ─> publish ─> bump-brew-formula
├─> mark-latest
└─> deploy-web
```

After:

```
release-please ─> build ─> test ─> publish ─┬─> mark-latest
├─> deploy-web
└─> bump-brew-formula
```

Diff

Two job definitions changed — `needs: release-please` ➜ `needs: [release-please, publish]`. Comments updated to capture the installability invariant. Total: +11 / -7.

Both jobs were running in parallel with build/test/publish — only release-please
was a 'needs' dependency. That meant 'latest' could flip and cli.deepgram.com
could ship a new version banner before the PyPI artifact was actually
installable.

Move both downstream of publish so they run in parallel with bump-brew-formula.
Final shape:

  release-please -> build -> test -> publish ─┬─> mark-latest
                                              ├─> deploy-web (production)
                                              └─> bump-brew-formula

PyPI is the gating artifact for all three: brew formula needs the SHA, web
landing page advertises the install command, mark-latest promotes the tag.
@lukeocodes lukeocodes merged commit 66e60d1 into main May 8, 2026
39 checks passed
@lukeocodes lukeocodes deleted the chore/release-flow-post-publish branch May 8, 2026 19:12
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.

1 participant