Repository navigation
ci: publish the image to its own package and the Python package to PyPI - #3
Merged
Merged
Conversation
The build job failed on main with permission_denied: read_package: it pushed
ghcr.io/kaitencloud/mcp, an older private package linked to kaiten-internal
that this repository's token cannot write, and which only the package's
settings can open to it. The image now goes to ghcr.io/kaitencloud/kaiten-mcp,
created by this repository's first publish and linked to it by the image's
source label, so it takes the repository's visibility.
The build cache moves from the GitHub Actions cache to a tag of the image's
own package: the gha cache is read-only on a re-run of an old pull request
("failed to reserve cache"). Only pushes write it; pull requests log in to
read it.
A v* tag now also publishes the Python package. kaiten-mcp is taken on PyPI by
an unrelated project, so the project is renamed kaitencloud-mcp; the
console script and the module keep their names. The publish job runs after
lint, test and build, checks the tag against pyproject.toml's version, and
publishes with trusted publishing (no stored token, id-token: write, the pypi
environment). uv.lock stays at revision 3, which the pinned uv 0.9.1 reads.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tom Ribuot <tom.ribuot@kaiten.sh>
This was referenced Oct 22, 2026
Alex (Alexkuva)
self-requested a review
October 22, 2026 09:16
Alex (Alexkuva)
approved these changes
Oct 22, 2026
This was referenced Oct 22, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes the red CI on
mainand makes the repository able to publish publicly.The failure
The
buildjob pushedghcr.io/kaitencloud/mcp:mainand was refused:denied: permission_denied: read_package. That package already exists (private, last pushed 2026-09-21 as 26.09.8) and is linked tokaiten-internal, so this repo'sGITHUB_TOKENcannot write it; only the package's settings (UI) can grant that. The red PR run in the report is the same job on a re-run of merged PR #1, where the GitHub Actions cache token is read-only (failed to reserve cache).The change
ghcr.io/kaitencloud/kaiten-mcp, a new package created by this repo's first publish and linked to it. It takes the repository's visibility, so the repository must be public before the first publish to get a public package. The oldmcppackage and its private 26.09.x versions are left alone.buildcachetag of that package, not the Actions cache. Pushes write it; pull requests log in to GHCR to read it.kaiten-mcpis taken there by an unrelated project, so the project iskaitencloud-mcp(free). The console scriptkaiten-mcpand the modulekaiten_mcpkeep their names. Av*tag runs apublishjob after lint, test and build, checks the tag againstpyproject.toml's version, and publishes with trusted publishing (no stored token,pypienvironment).uv.lockis relocked for the rename and kept at revision 3, which the pinned uv 0.9.1 reads (checked withuv lock --check).Before the first release
kaitencloud-mcp: ownerkaitencloud, repomcp, workflowci.yml, environmentpypi. Create thepypienvironment on the repo.Checked
ruff,pytest(56 passed),uv buildunder the new name,docker build, anduv lock --checkwith uv 0.9.1. The workflow itself can only be proven by CI on this PR (the PR build exercises the registry cache; a push to main exercises the publish).