feat(ci): trusted-publish workflows for miner + ui-kit, rename mcp workflow - #5609
Merged
Conversation
…rkflow
Adds packages/gittensory-miner and packages/gittensory-ui-kit to the
release-please-managed, OIDC trusted-publishing pipeline that
packages/gittensory-mcp and packages/gittensory-engine already had --
these two packages have never had CI publish automation before now.
New workflows (publish-miner.yml, publish-ui-kit.yml) mirror
publish-engine.yml's exact validate/publish/github-release shape:
unprivileged validate job packs + smoke-tests the tarball with no
id-token, privileged publish job (behind the environment: release
approval gate) downloads that exact tarball and publishes via OIDC
with provenance. Per-package adaptations:
- miner ships hand-written checked-in JS (node --check syntax
validation, no tsc build) with two bin entries; validate reuses the
existing test:miner-pack allowlist check (scripts/check-miner-
package.mjs), then smoke-tests both installed bins' --help output.
- ui-kit builds via tsc like engine; validate typechecks, then
smoke-tests by importing the built dist/utils.js and calling its
pure cn()/relativeTimeFromNow() exports (no React render needed).
release-please-config.json / .release-please-manifest.json gain
entries for both new components (miner-v*/ui-kit-v* tags, matching
the mcp-v*/engine-v* convention already in place), and
mcp-release-please.yml dispatches both new workflows on release,
syncs package-lock.json for all four components, and is retitled
from "MCP/Engine Release Please" to "Package Release Please" to
reflect the broader scope.
Also renames npm-publish.yml -> publish-mcp.yml for naming
consistency with the other three (publish-engine.yml,
publish-miner.yml, publish-ui-kit.yml), updating every internal
reference: the release-please dispatch, the three sibling workflows'
own header comments, and the MCP release-candidate tooling
(scripts/check-mcp-release-candidate.mjs, mcp-release-core.mjs,
mcp-release-candidate-core.mjs, their test) that hardcoded the old
path.
Also fixes an unrelated, pre-existing drift caught by this PR's own
gate: apps/gittensory-ui/src/lib/mcp-package.ts's
MCP_PACKAGE_KNOWN_LATEST_VERSION constant was stale at "0.7.0" against
the actually-published "0.7.1" -- bumped to match, per the file's own
documented invariant (never ahead of npm, always equal after a real
publish).
All four packages (@loopover/engine, @loopover/mcp, @loopover/miner,
@loopover/ui-kit) have already been bootstrap-published to npm from
an authenticated maintainer session and have their Trusted Publisher
configured in npmjs.com's package settings, pointing at these exact
workflow filenames -- this PR is what makes those configurations
actually resolve to real files on main.
## Test plan
- [x] Full local gate (`npm run test:ci` + `npm audit --audit-level=moderate`) green.
- [x] Verified both new workflows' validate-job logic end-to-end locally
before writing the YAML: typecheck/build, pack, file-list check,
install into a scratch dir, and run the actual smoke-test assertions
-- both passed, including miner's tarball correctly resolving
@loopover/engine as a real dependency from the live npm registry.
- [x] actionlint clean across all workflow changes.
Contributor
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
2 tasks
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5609 +/- ##
=======================================
Coverage 95.00% 95.00%
=======================================
Files 573 573
Lines 45629 45629
Branches 14661 14661
=======================================
Hits 43350 43350
Misses 1528 1528
Partials 751 751
Flags with carried forward coverage won't be shown. Click here to find out more. 🚀 New features to boost your workflow:
|
5 tasks
Closed
12 tasks
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.
Summary
packages/gittensory-minerandpackages/gittensory-ui-kitto the release-please-managed, OIDC trusted-publishing pipeline thatpackages/gittensory-mcpandpackages/gittensory-enginealready had — these two packages have never had CI publish automation before now.publish-miner.yml,publish-ui-kit.yml) mirrorpublish-engine.yml's exact validate/publish/github-release shape: unprivileged validate job packs + smoke-tests the tarball with noid-token, privileged publish job (behind theenvironment: releaseapproval gate) downloads that exact tarball and publishes via OIDC with provenance. Per-package adaptations:minerships hand-written checked-in JS (node --checksyntax validation, notscbuild) with two bin entries; validate reuses the existingtest:miner-packallowlist check, then smoke-tests both installed bins'--helpoutput.ui-kitbuilds viatsclike engine; validate typechecks, then smoke-tests by importing the builtdist/utils.jsand calling its purecn()/relativeTimeFromNow()exports (no React render needed).release-please-config.json/.release-please-manifest.jsongain entries for both new components (miner-v*/ui-kit-v*tags, matching themcp-v*/engine-v*convention already in place), andmcp-release-please.ymldispatches both new workflows on release, syncspackage-lock.jsonfor all four components, and is retitled from "MCP/Engine Release Please" to "Package Release Please" to reflect the broader scope.npm-publish.yml→publish-mcp.ymlfor naming consistency with the other three, updating every internal reference: the release-please dispatch, the three sibling workflows' own header comments, and the MCP release-candidate tooling (check-mcp-release-candidate.mjs,mcp-release-core.mjs,mcp-release-candidate-core.mjs, their test) that hardcoded the old path.Unrelated drift fixed along the way
apps/gittensory-ui/src/lib/mcp-package.ts'sMCP_PACKAGE_KNOWN_LATEST_VERSIONconstant was stale at"0.7.0"against the actually-published"0.7.1", caught by this PR's own gate (ui:version-audit) — bumped to match, per the file's own documented invariant (never ahead of npm, always equal after a real publish).npm-side state
All four packages (
@loopover/engine,@loopover/mcp,@loopover/miner,@loopover/ui-kit) have already been bootstrap-published to npm from an authenticated maintainer session and have their Trusted Publisher configured in npmjs.com's package settings, pointing at these exact workflow filenames — this PR is what makes those configurations actually resolve to real files onmain.Test plan
npm run test:ci+npm audit --audit-level=moderate) green.@loopover/engineas a real dependency from the live npm registry.actionlintclean across all workflow changes.