Skip to content

chore: take over publishing with release-please#15

Merged
luke-speechify merged 2 commits into
masterfrom
chore/release-please-takeover
Jun 19, 2026
Merged

chore: take over publishing with release-please#15
luke-speechify merged 2 commits into
masterfrom
chore/release-please-takeover

Conversation

@luke-speechify

@luke-speechify luke-speechify commented Jun 19, 2026

Copy link
Copy Markdown
Collaborator

What

Replace the legacy tag-driven ci.yml publish flow with release-please as the single owner of versioning, changelogs, and PyPI publishes — matching the pattern being introduced on speechify-api-sdk-typescript in parallel.

Why

ci.yml ran poetry publish --build on refs/tags/*, which meant publishes were driven by hand-cut git tags. That leaves no changelog, no conventional-commit-driven semver, and no PR-based release approval gate. Moving to release-please gives us:

  • A PR-based release flow (open / merge a chore(master): release <next> PR to ship)
  • Conventional-commit-driven semver bumps
  • Auto-generated CHANGELOG.md
  • One workflow that gates publish on release_created == 'true' rather than tag shape

What changes

New release-please artifacts

Workflow swap

  • Delete .github/workflows/ci.yml.
  • Add .github/workflows/release-please.yml: compile (poetry run mypy .) and test (poetry run pytest -rP .) on every push to master and every PR; release-please runs on push to master; publish (poetry publish --build with PYPI_TOKEN) gated on needs.release-please.outputs.release_created == 'true'.

Marker added

Fern ignore expansion

  • .fernignore now lists the release-please artifacts (config, manifest, workflow, CHANGELOG.md) and the deleted ci.yml so Fern regen doesn't recreate them. client_wrapper.py is NOT in .fernignore — Fern's regen replay re-applies release-please's commits (the marker + the version bump) on top of the regenerated file, so the marker and the bumped X-Fern-SDK-Version literal survive regen without needing the file frozen out of Fern entirely.

What does NOT change

No version literal changes anywhere. pyproject.toml stays at 1.2.3, the X-Fern-SDK-Version literal stays at 1.2.3 — release-please will propose the correct next bump on the next conventional commit.

Replaces the legacy tag-driven ci.yml publish flow with release-please as
the single owner of versioning, changelogs, and PyPI publishes.

What changes:
- Add release-please-config.json (release-type python, package speechify-api,
  extra-files tracks src/speechify/core/client_wrapper.py via the
  x-release-please-version marker comment)
- Add .release-please-manifest.json pinned to 1.2.3 — the current GitHub
  Release marked Latest, matching the PyPI latest and the pyproject.toml
  version on master
- Add .github/workflows/release-please.yml: compile (poetry + mypy) and
  test (poetry + pytest) on every push to master and every PR; then
  release-please on master; then poetry publish --build to PyPI gated on
  release_created
- Remove .github/workflows/ci.yml — the new workflow covers compile,
  test, and publish
- Add the inline x-release-please-version marker next to the existing
  X-Fern-SDK-Version literal in client_wrapper.py (literal stays at 1.2.3)
- Expand .fernignore to keep Fern regen from wiping the release-please
  artifacts, the new workflow, the deleted ci.yml, and client_wrapper.py

No version literal changes anywhere. pyproject.toml stays at 1.2.3,
the X-Fern-SDK-Version literal stays at 1.2.3 — release-please will
propose the correct next bump on the next conventional commit.
Drop src/speechify/core/client_wrapper.py from .fernignore. Fern's
regen replay re-applies release-please's commits (the
x-release-please-version marker + the version bump) on top of the
regenerated file, so we don't need to freeze it out of regen
entirely.
@luke-speechify luke-speechify merged commit 5bc56ca into master Jun 19, 2026
4 checks passed
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