Skip to content

ci: fix CI and the PyPI release (no commit to protected main); Python matrix, Dependabot - #4

Merged
Domantas merged 5 commits into
mainfrom
chore/ci-release-fixes
Sep 17, 2026
Merged

Domantas merged 5 commits into
mainfrom
chore/ci-release-fixes

Conversation

@Domantas

Copy link
Copy Markdown
Contributor

Summary

Both CI and Release have failed on every push to main since 2026-09-14 (Release since June), so nothing has been published since 1.1.1 (April). This fixes both, using the approach from the TS, .NET, CLI and Swift repos. It replaces #3.

Commits

  1. docs (from docs: use norbix.ai homepage instead of norbix.dev #3): norbix.dev → norbix.ai homepage.
  2. style(webhooks): the 2 ruff errors that failed CI's Lint step (an unused Awaitable import and a 104-character line in webhooks/receiver.py).
  3. docs(readme): the CI badge and PyPI Repository / Issues URLs pointed at github.com/norbix-dev/norbix-python, which isn't this repo. They now point at norbix-code/sdk-python.
  4. ci: release fix, Python matrix, Dependabot.
    • The release failure: python-semantic-release pushed a chore(release) commit to main, which MainBranchProtectionRuleSet rejects (GH013). The job now runs semantic-release version --no-commit --no-changelog --push. That stamps the version into the job's working tree, builds, tags the current commit, pushes only the tag, and creates the GitHub Release. Then uv publish uploads to PyPI, with --check-url so a re-run never double-uploads.
    • Verified in a scratch clone: the real run built norbix-1.2.0 with wheel Version: 1.2.0 and __version__ = "1.2.0", and tagged without a commit.
    • The release job now also runs lint + typecheck, syncs to the branch tip, and has a workflow_dispatch republish=true recovery path that builds and uploads the latest tag. The v0.0.0 bootstrap step is gone (tags exist).
    • ci.yml: Python 3.10 / 3.12 / 3.13 (3.10 and 3.13 checked locally: tests + mypy pass) plus a wheel contents check.
    • Actions: checkout v7, setup-uv v10, setup-python v7. dependabot.yml: weekly uv + GitHub Actions updates. CHANGELOG.md points to GitHub Releases.

Trade-off: version in pyproject.toml on main stays at 1.1.1; the tag and PyPI are the source of truth.

Release

main already has feat: commits since v1.1.1, so the merge releases 1.2.0 whatever the merge method.

Test plan

  • ruff check, mypy src, pytest (595 passed) locally; tests + mypy also on Python 3.10 and 3.13
  • PSR noop on a main checkout: next version 1.2.0, tag + tag-only push + GitHub Release, no commit
  • Real PSR run and recovery build steps in a scratch clone: correct version in the wheel
  • CI matrix + package job
  • After merge: norbix 1.2.0 on PyPI, tag v1.2.0, GitHub Release

🤖 Generated with Claude Code

Domantas and others added 5 commits September 17, 2026 09:29
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Unused collections.abc.Awaitable import (F401) and a 104-character method
signature (E501). CI's Lint step has failed on main since 2026-09-14.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ode/sdk-python

The CI badge and the PyPI Repository / Issues links used
github.com/norbix-dev/norbix-python, which is not this repository.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…endabot

- release.yml: python-semantic-release pushed a chore(release) commit to
  main, which MainBranchProtectionRuleSet rejects (GH013) — every release
  since 2026-06 failed there. It now runs `semantic-release version
  --no-commit --no-changelog --push`: stamps the version into the working
  tree, builds, tags the current commit, pushes only the tag and creates the
  GitHub Release, then `uv publish` (with --check-url so re-runs are safe).
  Verified in a scratch clone: builds norbix-1.2.0 with Version 1.2.0 and
  __version__ = "1.2.0". Also: lint + typecheck before releasing, sync to the
  branch tip, a workflow_dispatch republish=true recovery path, and the
  v0.0.0 bootstrap step removed (tags exist).
- ci.yml: Python 3.10 / 3.12 / 3.13 matrix and a wheel contents check.
- Actions: checkout v7, setup-uv v10, setup-python v7.
- dependabot.yml: weekly uv + GitHub Actions updates.
- CHANGELOG.md: points to GitHub Releases.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
setup-uv no longer publishes a moving major tag (v10 does not exist), so every
job failed in 'Set up job'. Dependabot keeps the exact version current.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Domantas
Domantas merged commit 24a59c6 into main Sep 17, 2026
4 checks passed
@Domantas
Domantas deleted the chore/ci-release-fixes branch September 17, 2026 06:58
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