feat: npm publish pipeline + package versioning (0.0.1-alpha.1) #341

Merged
jason.woltje merged 1 commits from feat/npm-publish-pipeline into main 2026-04-01 17:47:11 +00:00
Owner

Summary

Adds npm package publishing to the Woodpecker CI pipeline so all @mosaic/* packages are available from the Gitea npm registry. This enables standalone installation via npm install @mosaic/mosaic.

Changes

Publish Pipeline (.woodpecker/publish.yml)

  • New publish-npm step runs after build, parallel with Docker image builds
  • Publishes all non-private @mosaic/* packages to Gitea npm registry
  • Uses pnpm publish which auto-resolves workspace:* → concrete versions
  • Tolerates already-published versions (idempotent re-runs)

Package Configuration (20 packages)

  • All versioned at 0.0.1-alpha.1
  • publishConfig added: Gitea registry, public access
  • files field added: ship only dist/ (forge also ships pipeline/)

Meta Package (@mosaic/mosaic)

  • Now depends on: @mosaic/forge, @mosaic/macp, @mosaic/prdy, @mosaic/quality-rails, @mosaic/types
  • npm install @mosaic/mosaic pulls in the full standalone framework

Build Fixes

  • Fixed forge and macp tsconfig.json rootDir (.src) so dist/index.js resolves correctly
  • Excluded __tests__/ and vitest.config.ts from build includes

Required Secret

woodpecker secret add mosaic/mosaic-stack --name gitea_npm_token --value '<token>' --event push,manual,tag

Token needs package:write scope from https://git.mosaicstack.dev/user/settings/applications

Testing

  • pnpm typecheck — 36/36 pass
  • pnpm build — 20/20 pass
  • pnpm pack on @mosaic/mosaic — workspace deps resolve to 0.0.1-alpha.1
  • pnpm pack on @mosaic/forgepipeline/ assets included, dist/index.js at correct path
## Summary Adds npm package publishing to the Woodpecker CI pipeline so all `@mosaic/*` packages are available from the Gitea npm registry. This enables standalone installation via `npm install @mosaic/mosaic`. ## Changes ### Publish Pipeline (`.woodpecker/publish.yml`) - New `publish-npm` step runs after `build`, parallel with Docker image builds - Publishes all non-private `@mosaic/*` packages to Gitea npm registry - Uses `pnpm publish` which auto-resolves `workspace:*` → concrete versions - Tolerates already-published versions (idempotent re-runs) ### Package Configuration (20 packages) - All versioned at `0.0.1-alpha.1` - `publishConfig` added: Gitea registry, public access - `files` field added: ship only `dist/` (forge also ships `pipeline/`) ### Meta Package (`@mosaic/mosaic`) - Now depends on: `@mosaic/forge`, `@mosaic/macp`, `@mosaic/prdy`, `@mosaic/quality-rails`, `@mosaic/types` - `npm install @mosaic/mosaic` pulls in the full standalone framework ### Build Fixes - Fixed forge and macp `tsconfig.json` `rootDir` (`.` → `src`) so `dist/index.js` resolves correctly - Excluded `__tests__/` and `vitest.config.ts` from build includes ## Required Secret ```bash woodpecker secret add mosaic/mosaic-stack --name gitea_npm_token --value '<token>' --event push,manual,tag ``` Token needs `package:write` scope from https://git.mosaicstack.dev/user/settings/applications ## Testing - `pnpm typecheck` — 36/36 pass - `pnpm build` — 20/20 pass - `pnpm pack` on `@mosaic/mosaic` — workspace deps resolve to `0.0.1-alpha.1` - `pnpm pack` on `@mosaic/forge` — `pipeline/` assets included, `dist/index.js` at correct path
jason.woltje added 1 commit 2026-04-01 17:47:05 +00:00
feat: npm publish pipeline + package versioning (0.0.1-alpha.1)
All checks were successful
ci/woodpecker/push/ci Pipeline was successful
ci/woodpecker/pr/ci Pipeline was successful
13934d4879
Publish pipeline:
- Add publish-npm step to .woodpecker/publish.yml — publishes all
  @mosaic/* packages to Gitea npm registry on main push/tag
- Requires gitea_npm_token Woodpecker secret (package:write scope)
- publish-npm runs after build, parallel with Docker image builds
- pnpm publish resolves workspace:* to concrete versions automatically

Package configuration:
- All 20 packages versioned at 0.0.1-alpha.1
- publishConfig added to all packages (Gitea registry, public access)
- files field added to all packages (ship only dist/)
- @mosaic/forge includes pipeline/ assets in published package

Meta package (@mosaic/mosaic):
- Now depends on @mosaic/forge, @mosaic/macp, @mosaic/prdy,
  @mosaic/quality-rails, @mosaic/types
- npm install @mosaic/mosaic pulls in the standalone framework

Build fixes:
- Fix forge and macp tsconfig rootDir: '.' -> 'src' so dist/index.js
  resolves correctly (was dist/src/index.js)
- Exclude __tests__ and vitest.config from build includes
- Clean stale build artifacts from old rootDir config

Required Woodpecker secret:
  woodpecker secret add mosaic/mosaic-stack \
    --name gitea_npm_token --value '<token>' \
    --event push,manual,tag
jason.woltje merged commit 2394a2a0dd into main 2026-04-01 17:47:11 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: mosaicstack/stack#341