Skip to content

Commit 879e561

Browse files
update monorepo integration
1 parent f95a1de commit 879e561

10 files changed

Lines changed: 32 additions & 2635 deletions

File tree

‎.dev/sessions.md‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,24 @@ Newest first.
1616
- Added tech-debt entry for `setup.md` referencing `.env.arrangerDev` which no longer exists — left unfixed as the correct replacement process is unclear.
1717
- Added three tech-debt entries under `## apps/mcp-server` in `tech-debt.md`: `InMemoryEventStore` not suitable for production (persistent store needed before production deployment); MCP session map does not evict abandoned transports (timestamp-based sweep approach noted); introspection types should be Zod-first so MCP output schemas can import directly from `search-server` rather than duplicating locally
1818
- Updated `sessions.md` protocol in `~/.claude/CLAUDE.md`, `CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`, and memory: `sessions.md` records only changes to code or working documents, not conversational activity
19+
- Renamed Docker stage `server` → `search-server` in both Dockerfiles — removes ambiguity now that two server images exist
20+
- Rewrote `jenkins-pipeline-library/vars/pipelineOvertureArranger.groovy` (Phase 2 CI/CD work):
21+
- `turboBase` computed once from `GIT_PREVIOUS_COMMIT` (the commit Jenkins last built on this branch) with `HEAD^1` fallback for first builds — correctly covers multi-commit pushes to any branch, including direct pushes to main, without needing branch-specific logic; used for all change detection throughout the pipeline
22+
- Turbo build with `--filter=[turboBase]` replaces `npm run modules:build`; only affected packages and their dependents build
23+
- Turbo test with `--filter=[turboBase]` replaces five individual `npm run test -w` calls; `integration-tests/server` and `integration-tests/mcp-server` excluded from Turbo and handled separately
24+
- `integration-tests/server` runs conditionally — only when files in `sqon`, `types`, `graphql-router`, `apps/search-server`, or `integration-tests/server` changed since `turboBase`
25+
- Docker builds conditional per image: `search-server` image rebuilds when its server chain or Dockerfile changes; `mcp-server` image rebuilds when `apps/mcp-server`, shared modules, or Dockerfile changes; `POST_BUILD: Publish` parameter overrides and builds both
26+
- App versions (`searchServerVersion`, `mcpServerVersion`) read directly from `apps/*/package.json` in the Build stage — fixes pre-existing null bug where `versionsMap['server']` was used but `versionsMap` only covered `modules/*`
27+
- `TURBO_TELEMETRY_DISABLED=1` added to environment block
28+
- TEMP `release-charts` stage removed; `modules/charts` now covered by the standard release publish loop
29+
- Dead commented-out Slack notification code removed
1930

2031
**Decisions:**
2132

2233
- `fieldShape` outputSchema without `.parse()` is correct MCP usage — `outputSchema` is declarative for MCP clients, not runtime-enforced by the SDK
2334
- Session eviction approach for `apps/mcp-server/src/http/app.ts`: track `lastSeenAt` per transport entry, sweep via `setInterval`, close and evict sessions idle beyond a configurable TTL (e.g. 30 min)
2435
- `integration-tests/mcp-server` excluded from CI pipeline for now — needs full stack (ES + Arranger server + MCP server); design deferred
36+
- `Deploy to overture-dev` stage left unchanged — infrastructure config for `arranger-iobio` must be updated separately to use the renamed `arranger-search-server` image
2537

2638
**Open threads:**
2739

@@ -34,6 +46,9 @@ Newest first.
3446

3547
**Done:**
3648

49+
- Removed `docker/**` and `docker-compose.yml` from `turbo.json` globalDependencies — those files don't affect TypeScript source so they were causing unnecessary cache busting; `tsconfig.eslint.json` remains
50+
- Added `@overture-stack/arranger-types` as an explicit dependency in `modules/components/package.json` (`file:../types`) — without this, Turbo's graph treated `components` as independent of `types`, meaning a breaking change to `types` could pass CI without `components` being rebuilt or tested
51+
- Corrected `modules/graphql-router/package.json` to use the shallower `file:../types` (was `file:../../modules/types` — unnecessarily traversing up to root and back down); `modules/types` already used the shallower `../sqon` convention; `apps/` and `integration-tests/` paths are already as shallow as their locations allow
3752
- Completed items removed from roadmap (now in sessions only); roadmap stays forward-looking
3853

3954
**Decisions:**

‎.dev/tech-debt.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,14 @@ The preferred pattern is **(B)**. Mixing the two makes it harder to find tests,
187187
**Fix:** In `spinupActive.js`, after fetching `/introspection/fields`, assert that `Object.keys(data.fields).length` matches the field count from the live ES index (e.g. via a separate `GET /<index>/_mapping` call, or by asserting against a known field that is in the ES mapping but deliberately absent from the test fixture's config files). The simplest approach: add a fixture field directly to the ES test index that is not present in any config file, then assert it appears in the introspection response.
188188
**Standalone:** yes — additive test, no changes to application code
189189

190+
### Shallow git clone breaks `GIT_PREVIOUS_COMMIT`-based change detection
191+
**File:** `jenkins-pipeline-library/vars/pipelineOvertureArranger.groovy`
192+
**Severity:** medium (silently disables change detection — everything would fall back to HEAD^1 or fail)
193+
**Kind:** ops risk
194+
**Issue:** The pipeline uses `GIT_PREVIOUS_COMMIT` (set by the Jenkins Git plugin) as the base for all git diff comparisons. If the Jenkins checkout is configured with `--depth 1` (shallow clone), `GIT_PREVIOUS_COMMIT` will not be reachable in the local git history and `git diff ${turboBase} HEAD` will fail. The pipeline comment documents this requirement, but there is no runtime guard — a misconfigured checkout silently degrades or errors.
195+
**Fix:** Either add a guard (`git cat-file -e ${turboBase} || turboBase = 'HEAD^1'`) to detect and recover from an unreachable commit, or document the shallow-clone restriction in DEVELOPMENT.md alongside the Jenkins setup notes.
196+
**Standalone:** yes — purely a pipeline change; no application code involved
197+
190198
### `arranger-iobio` deploy references old `arranger-server` image name
191199
**File:** infra repo — deploy config for `arranger-iobio` on `overture-dev`
192200
**Severity:** medium (deploy will reference a stale image name after the Docker rename lands)

‎docker/Dockerfile.jenkins‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ RUN npm ci \
2323
--ignore-scripts \
2424
--include-workspace-root=false \
2525
--workspace apps/search-server \
26+
--workspace apps/mcp-server \
2627
--workspace modules/graphql-router \
2728
--workspace modules/types \
2829
--workspace modules/sqon
@@ -32,7 +33,7 @@ CMD ["/bin/sh"]
3233
#######################################################
3334
# Arranger Server
3435
#######################################################
35-
FROM node:24-alpine AS server
36+
FROM node:24-alpine AS search-server
3637

3738
ARG APP_FOLDER
3839
ARG APP_USER

‎docker/Dockerfile.local‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ RUN npm ci --include-workspace-root=false && \
2424
#######################################################
2525
# Arranger Server
2626
#######################################################
27-
FROM node:24-alpine AS server
27+
FROM node:24-alpine AS search-server
2828

2929
ARG APP_FOLDER
3030
ARG APP_USER

‎integration-tests/server/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "integration-tests-server",
2+
"name": "integration-tests-search-server",
33
"dependencies": {
44
"@elastic/elasticsearch": "^7.17.14",
55
"@overture-stack/arranger-graphql-router": "file:../../modules/graphql-router",

‎modules/components/package.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"watch": "npm run clear:dist && npm run build -- --watch"
3030
},
3131
"dependencies": {
32+
"@overture-stack/arranger-types": "file:../types",
3233
"@emotion/react": "^11.0.0",
3334
"@emotion/styled": "^11.0.0",
3435
"@overture-stack/sqon-builder": "^1.1.0",

‎modules/graphql-router/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"@graphql-tools/schema": "^9.0.17",
3838
"@graphql-tools/utils": "^10.2.2",
3939
"@opensearch-project/opensearch": "^3.6.0",
40-
"@overture-stack/arranger-types": "file:../../modules/types",
40+
"@overture-stack/arranger-types": "file:../types",
4141
"@overture-stack/sqon-builder": "^1.1.0",
4242
"apollo-server": "^3.10.3",
4343
"apollo-server-core": "^3.10.3",

‎package-lock.json‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)