lablup / lablup/backend.ai-webui
Set up npm release pipeline for `packages/backend.ai-client` and retire `backend.ai-client-js`
- Dominant language
- TypeScript
- Stars
- 133
- Forks
- 81
- Avg merge
- 1d 12h
- Merged PRs (30d)
- 355
Description
## Summary
`packages/backend.ai-client` is publish-ready (has `publishConfig.access: public`, `files`, `exports`, `prepublishOnly` = lint+test+build, and a dedicated CI workflow `backend-ai-client-ci.yml`) but has no publish trigger. Set up an npm release pipeline for it **directly from this monorepo**, mirroring the existing `publish-backend.ai-ui.yml`, and retire `lablup/backend.ai-client-js`.
## Why publish from this repo (not migrate to `backend.ai-client-js`)
|Fact|Implication|
|---|---|
|npm name `backend.ai-client` is already Lablup-owned (`inureyes`, `yyhwan@lablup.com`); last published versions `20.8.0` / `21.3.1` from the old repo|The name can be reclaimed in place — `26.x > 21.3.1` satisfies semver. No rename/scope change.|
|`backend.ai-client-js` is dormant (last push 2023-04, plain JS, v21.9.0)|Migrating into it means new CI, protection, release process — while the package still co-develops with its main consumer (webui react).|
|Package devDeps use `workspace:*` (`eslint-config-bai`) and `catalog:` pins|It is structurally a monorepo member; extraction costs work for zero gain.|
|This repo already publishes `backend.ai-ui` (26.8.1 on npm) and `backend.ai-docs-toolkit` via per-package workflows|The pipeline is a copy of a proven template.|
## Pipeline design (mirror `publish-backend.ai-ui.yml`)
- **Canary**: push to `main` touching `packages/backend.ai-client/**` → publish `-canary--` under the `canary` dist-tag (via `update-canary-version.sh` pattern).
- **Release**: `v*` tag → `determine-publish-strategy.sh` semantics: `-alpha` → skip, `-rc` → `rc` tag, `-beta` → `beta` tag, plain → `latest` (with the existing not-lower-than-current check).
- **Versioning**: rides the webui release train (root `package.json` version), same as `backend.ai-ui`. No independent versioning until a consumer outside webui needs it.
- **Auth**: OIDC trusted publishing (`permissions: id-token: write`), no `NODE_AUTH_TOKEN` — same as the ui workflow.
## Work items
- [ ] Copy `update-canary-version.sh` / `determine-publish-strategy.sh` into `packages/backend.ai-client/scripts/` (they are already package-relative)
- [ ] Add `.github/workflows/publish-backend.ai-client.yml` (copy of the ui workflow, paths swapped)
- [ ] npm: an existing owner adds `lablup/backend.ai-webui` + workflow filename as **Trusted Publisher** on the `backend.ai-client` package (manual, blocking)
- [ ] Optionally `npm deprecate backend.ai-client@"<22" "superseded; see backend.ai-webui monorepo"`
- [ ] Archive `lablup/backend.ai-client-js` with a pointer README
- [ ] First-release sanity: install `@canary` in a scratch Node 22+ ESM project; verify `dist/index.d.ts` resolves and the `types` export condition stays first (the ordering trap that broke `backend.ai-ui` ≥26.4.8)
## Out of scope
- Re-typing the ~158 `Promise` returns and removing browser coupling (`localStorage`, cookie-session transport) — that is the separate "server-grade SDK" effort; this issue only makes the package installable and versioned, which that work needs anyway.
- Changesets / independent versioning.
JIRA Issue: FR-3653
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.