feat(ci): add auto-publish job for @bytelyst/* packages + update migration doc
- Add publish-packages job to CI workflow (runs after build-and-test) - Publish 13 remaining packages to Gitea (56 total, up from 43) - Update act_runner token to read+write scope - Fix package counts throughout migration doc (43 → 56) - Update CI status: all 10/10 repos now have CI workflows - Add package inventory section (§15.1)
This commit is contained in:
parent
409144a2ef
commit
aa139d5021
@ -28,3 +28,23 @@ jobs:
|
||||
|
||||
- name: Test
|
||||
run: pnpm test
|
||||
|
||||
publish-packages:
|
||||
name: Publish @bytelyst/* to Gitea npm registry
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build-and-test]
|
||||
timeout-minutes: 10
|
||||
defaults:
|
||||
run:
|
||||
working-directory: /Users/sd9235/code/mygh/learning_ai_common_plat
|
||||
steps:
|
||||
- name: Pull latest
|
||||
run: git pull --ff-only origin main || true
|
||||
|
||||
- name: Build all packages
|
||||
run: pnpm -r --filter './packages/**' build
|
||||
|
||||
- name: Publish to local Gitea registry
|
||||
env:
|
||||
GITEA_NPM_TOKEN: ${{ secrets.GITEA_NPM_TOKEN }}
|
||||
run: bash ./scripts/publish-local-gitea-packages.sh
|
||||
|
||||
@ -132,15 +132,15 @@ That is enough to treat this Mac as the single-VM rehearsal environment.
|
||||
|
||||
- shared packages build cleanly in `learning_ai_common_plat`
|
||||
- a local-only Gitea package token was created and used successfully for local package publishing
|
||||
- **49 `@bytelyst/*` packages** published to local Gitea npm registry
|
||||
- **56 `@bytelyst/*` packages** published to local Gitea npm registry
|
||||
- a clean scratch `pnpm install` from the local Gitea registry works on all migrated repos
|
||||
- **all 10 product repos migrated** from `file:` refs + `docker-prep.sh` to semver `^0.1.0` + registry-backed Dockerfiles
|
||||
- all migrated repos pass host-side `pnpm install` and backend typecheck
|
||||
- Docker builds (backend + web) verified for all repos with Dockerfiles
|
||||
- local Gitea CI green for 8/8 repos with CI workflows (FlowMonk, NoteLett, ActionTrail, LocalMemGPT, NomGap, ChronoMind, JarvisJr, PeakPulse)
|
||||
- local Gitea CI green for 10/10 repos with CI workflows (FlowMonk, NoteLett, ActionTrail, LocalMemGPT, NomGap, ChronoMind, JarvisJr, PeakPulse, MindLyst, LysnrAI)
|
||||
- `docker-prep.sh` removed from all 10 repos
|
||||
- `GITEA_NPM_TOKEN` added to act_runner config for CI registry access
|
||||
- stale "Build @bytelyst/* packages" step removed from all CI workflows
|
||||
- stale "Build @bytelyst/\* packages" step removed from all CI workflows
|
||||
|
||||
### Important implementation finding
|
||||
|
||||
@ -170,9 +170,9 @@ Host-side installs, Docker builds, and local CI are all validated.
|
||||
|
||||
| Topology | `NETWORK=` | Gitea host | Docker reaches Gitea via | `--add-host` needed? |
|
||||
| ------------------- | ---------- | ------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------- |
|
||||
| **Local dev (Mac)** | `corp` | `localhost:3300` (GITEA_NPM_HOST=localhost) | `host.docker.internal` + `--add-host localhost:host-gateway` | **Yes** — expected |
|
||||
| **Local dev (Mac)** | `corp` | `localhost:3300` (GITEA_NPM_HOST=localhost) | `host.docker.internal` + `--add-host localhost:host-gateway` | **Yes** — expected |
|
||||
| **Local dev (Mac)** | `home` | `<vm-host>:3300` (from `~/.gitea_vm_host`) | Direct internet (no proxy) | **No** — direct connection |
|
||||
| **VM deployment** | N/A | `localhost:3300` or compose service `gitea:3300` | Native Docker networking | **No** — `ROOT_URL` resolves natively |
|
||||
| **VM deployment** | N/A | `localhost:3300` or compose service `gitea:3300` | Native Docker networking | **No** — `ROOT_URL` resolves natively |
|
||||
|
||||
The `--add-host localhost:host-gateway` workaround is the **correct local-dev pattern** when `NETWORK=corp`, not a generic blocker. On a VM, Gitea's `ROOT_URL` will be set to the real hostname or compose service name, so tarball URLs resolve without any host-mapping workaround.
|
||||
|
||||
@ -180,8 +180,8 @@ At the time of writing (2026-03-24):
|
||||
|
||||
- host-side registry usage is validated across all 10 migrated repos
|
||||
- Docker builds verified for all repos with Dockerfiles
|
||||
- local Gitea CI green for all 8 repos with CI workflows
|
||||
- 49 `@bytelyst/*` packages published to local Gitea
|
||||
- local Gitea CI green for all 10 repos with CI workflows
|
||||
- 56 `@bytelyst/*` packages published to local Gitea
|
||||
- `docker-prep.sh` retired from all repos
|
||||
|
||||
Verified local FlowMonk Docker recipe (`NETWORK=corp`):
|
||||
@ -208,16 +208,16 @@ On the target VM, the recipe simplifies to just `--build-arg GITEA_NPM_HOST=<git
|
||||
|
||||
## 5.2 Remaining Gaps From Local Mac Validation
|
||||
|
||||
The local rehearsal on this Mac has validated the **host-side** registry model, **Docker builds** (backend + web), and **local Gitea CI** across 8 product repos.
|
||||
The local rehearsal on this Mac has validated the **host-side** registry model, **Docker builds** (backend + web), and **local Gitea CI** across all 10 product repos.
|
||||
|
||||
### Validated ✅
|
||||
|
||||
- Host-side `pnpm install` against local Gitea registry (all 10 repos)
|
||||
- Backend + web Docker builds with BuildKit secret + `--add-host` (all repos with Dockerfiles)
|
||||
- Local Gitea CI green for all 8 repos with CI workflows
|
||||
- Local Gitea CI green for all 10 repos with CI workflows
|
||||
- Runner re-registered against `127.0.0.1` (avoids IPv6 `[::1]` declaration failure)
|
||||
- `GITEA_NPM_TOKEN` added to act_runner config for CI registry access
|
||||
- 49 `@bytelyst/*` packages published and consumed successfully
|
||||
- 56 `@bytelyst/*` packages published and consumed successfully
|
||||
- Backend typecheck passes for all 10 migrated repos
|
||||
- `docker-prep.sh` removed from all 10 repos
|
||||
|
||||
@ -230,8 +230,7 @@ The local rehearsal on this Mac has validated the **host-side** registry model,
|
||||
### Remaining minor items
|
||||
|
||||
- Mobile workspace members remain on `file:` refs where present (NomGap, NoteLett) — acceptable for now
|
||||
- Local Gitea Actions has not yet been validated for the package build → publish → consumer flow (CI runs typecheck/test, not publish)
|
||||
- MindLyst and LysnrAI have no Gitea CI workflows yet (lower priority)
|
||||
- `@bytelyst/create-app` is marked `private: true` and cannot be published (scaffolding CLI tool, not consumed by product repos)
|
||||
|
||||
### Why this matters for Azure
|
||||
|
||||
@ -582,10 +581,10 @@ All package-distribution concerns are resolved:
|
||||
This migration plan is locally validated only when all are true:
|
||||
|
||||
- [x] local Gitea package publish auth verified
|
||||
- [x] local package publish path verified — 49 packages published
|
||||
- [x] local package publish path verified — 56 packages published
|
||||
- [x] local consumer install path verified on the host — all 10 repos
|
||||
- [x] Docker build path verified without `docker-prep.sh` — all repos with Dockerfiles
|
||||
- [x] local Gitea CI verified — 8/8 repos with CI workflows green
|
||||
- [x] local Gitea CI verified — 10/10 repos with CI workflows green
|
||||
- [x] pilot repo migrated successfully end-to-end including Docker (FlowMonk)
|
||||
- [x] 7 standard repos migrated and verified (NoteLett, ActionTrail, LocalMemGPT, NomGap, ChronoMind, JarvisJr, PeakPulse)
|
||||
- [x] remaining 2 non-standard repos migrated (MindLyst, LysnrAI)
|
||||
@ -597,10 +596,10 @@ This migration plan is locally validated only when all are true:
|
||||
## 15. Migration Complete — Summary
|
||||
|
||||
1. ~~create or verify a local-only Gitea package token~~ ✅
|
||||
2. ~~publish `@bytelyst/*` packages to local Gitea~~ ✅ (49 packages)
|
||||
2. ~~publish `@bytelyst/*` packages to local Gitea~~ ✅ (56 packages)
|
||||
3. ~~migrate pilot repo (FlowMonk) end-to-end~~ ✅
|
||||
4. ~~expand to remaining standard-layout repos~~ ✅ (7 repos)
|
||||
5. ~~confirm Gitea CI green for all repos~~ ✅ (8/8 with CI workflows)
|
||||
5. ~~confirm Gitea CI green for all repos~~ ✅ (10/10 with CI workflows)
|
||||
6. ~~migrate remaining 2 non-standard repos (MindLyst, LysnrAI)~~ ✅
|
||||
7. ~~document rollback path~~ ✅ (§12)
|
||||
8. ~~document Azure single-VM reproduction steps~~ ✅ (§13)
|
||||
@ -612,17 +611,33 @@ This migration plan is locally validated only when all are true:
|
||||
|
||||
---
|
||||
|
||||
## 15.1 Package Inventory (verified 2026-03-26)
|
||||
|
||||
58 package directories exist in `packages/`. Of those:
|
||||
|
||||
- **2 are native SDKs** (not npm): `kotlin-platform-sdk`, `swift-platform-sdk`
|
||||
- **56 are published** to Gitea npm registry (55 at `0.1.0`, `react-auth` also at `0.1.1`)
|
||||
- **1 is private** (`@bytelyst/create-app`) — scaffolding CLI tool, not publishable
|
||||
|
||||
### Not published (1 package)
|
||||
|
||||
```
|
||||
@bytelyst/create-app # private: true in package.json — scaffolding CLI, not consumed by product repos
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 16. Post-Migration Audit (2026-03-24)
|
||||
|
||||
After the initial migration was marked complete, a systematic audit was run across all 10 repos. 5 bugs/gaps were found and fixed:
|
||||
|
||||
| # | Finding | Severity | Fix | Repo |
|
||||
|---|---------|----------|-----|------|
|
||||
| 1 | FlowMonk `mobile/package.json` had 6 stale `file:` refs | **BUG** | Converted to `^0.1.0` + regenerated lockfile | `learning_ai_flowmonk` |
|
||||
| 2 | MindLyst had 3 stale `package-lock.json` files (npm artifact, pnpm doesn't use them) | **BUG** | Deleted all 3 | `learning_multimodal_memory_agents` |
|
||||
| 3 | MindLyst missing `.dockerignore` | **GAP** | Created with proper exclusions (node_modules, .next, dist, KMP build dirs) | `learning_multimodal_memory_agents` |
|
||||
| 4 | MindLyst CI workflow had stale "Build @bytelyst/* packages" step + used npm instead of pnpm | **BUG** | Removed step, added `pnpm install`, switched to `pnpm --filter` | `learning_multimodal_memory_agents` |
|
||||
| 5 | LysnrAI CI workflow had stale "Build @bytelyst/* packages" step | **BUG** | Removed step, added `pnpm install` | `learning_voice_ai_agent` |
|
||||
| # | Finding | Severity | Fix | Repo |
|
||||
| --- | -------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------- | ----------------------------------- |
|
||||
| 1 | FlowMonk `mobile/package.json` had 6 stale `file:` refs | **BUG** | Converted to `^0.1.0` + regenerated lockfile | `learning_ai_flowmonk` |
|
||||
| 2 | MindLyst had 3 stale `package-lock.json` files (npm artifact, pnpm doesn't use them) | **BUG** | Deleted all 3 | `learning_multimodal_memory_agents` |
|
||||
| 3 | MindLyst missing `.dockerignore` | **GAP** | Created with proper exclusions (node_modules, .next, dist, KMP build dirs) | `learning_multimodal_memory_agents` |
|
||||
| 4 | MindLyst CI workflow had stale "Build @bytelyst/\* packages" step + used npm instead of pnpm | **BUG** | Removed step, added `pnpm install`, switched to `pnpm --filter` | `learning_multimodal_memory_agents` |
|
||||
| 5 | LysnrAI CI workflow had stale "Build @bytelyst/\* packages" step | **BUG** | Removed step, added `pnpm install` | `learning_voice_ai_agent` |
|
||||
|
||||
### Dead file sweep — confirmed clean
|
||||
|
||||
@ -644,20 +659,20 @@ After completing the migration and audit, all Dockerfiles were tested with actua
|
||||
|
||||
### Bugs found and fixed during Docker verification
|
||||
|
||||
| # | Finding | Severity | Fix | Repo |
|
||||
|---|---------|----------|-----|------|
|
||||
| 6 | MindLyst + LysnrAI Dockerfiles used shell syntax (`2>/dev/null \|\| true`) in COPY instructions | **BUG** | Removed — Docker COPY doesn't support shell redirects | both |
|
||||
| 7 | MindLyst web Dockerfile used `pnpm run build -- --webpack` — pnpm passes `--webpack` as directory arg | **BUG** | Changed to `npx next build --webpack` | `learning_multimodal_memory_agents` |
|
||||
| 8 | `@bytelyst/extraction` was missing from Gitea registry | **GAP** | Published (now 49 packages total) | common-plat |
|
||||
| # | Finding | Severity | Fix | Repo |
|
||||
| --- | ----------------------------------------------------------------------------------------------------- | -------- | ----------------------------------------------------- | ----------------------------------- |
|
||||
| 6 | MindLyst + LysnrAI Dockerfiles used shell syntax (`2>/dev/null \|\| true`) in COPY instructions | **BUG** | Removed — Docker COPY doesn't support shell redirects | both |
|
||||
| 7 | MindLyst web Dockerfile used `pnpm run build -- --webpack` — pnpm passes `--webpack` as directory arg | **BUG** | Changed to `npx next build --webpack` | `learning_multimodal_memory_agents` |
|
||||
| 8 | `@bytelyst/extraction` was missing from Gitea registry | **GAP** | Published | common-plat |
|
||||
|
||||
### Docker build results — all PASS
|
||||
|
||||
| Repo | Image | Status |
|
||||
|------|-------|--------|
|
||||
| MindLyst | `mindlyst-backend:test` | ✅ |
|
||||
| MindLyst | `mindlyst-web:test` | ✅ |
|
||||
| LysnrAI | `lysnrai-backend:test` | ✅ |
|
||||
| LysnrAI | `lysnrai-dashboard:test` | ✅ |
|
||||
| Repo | Image | Status |
|
||||
| -------- | ------------------------ | ------ |
|
||||
| MindLyst | `mindlyst-backend:test` | ✅ |
|
||||
| MindLyst | `mindlyst-web:test` | ✅ |
|
||||
| LysnrAI | `lysnrai-backend:test` | ✅ |
|
||||
| LysnrAI | `lysnrai-dashboard:test` | ✅ |
|
||||
|
||||
(Standard repos were already Docker-verified during the initial migration.)
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user