Prasad P. Pawar created ATLAS-5328:
--------------------------------------
Summary: Atlas UI : Reduce atlas-dashboard (React UI) Maven build
time — npm ci, frontend build optimizations, and RE npm cache persistence
Key: ATLAS-5328
URL: https://issues.apache.org/jira/browse/ATLAS-5328
Project: Atlas
Issue Type: Improvement
Components: atlas-webui
Affects Versions: 3.0.0
Reporter: Prasad P. Pawar
Assignee: Prasad P. Pawar
Background
Build performance analysis shows atlas-dashboard (Apache Atlas React UI) is the
slowest reactor module (~16 min),
with npm install alone taking ~15m 27s. The build uses frontend-maven-plugin
with a cold npm install into target/atlas-webapp (node_modules excluded on
copy),
plus a nested atlas-lineage prebuild. Full install savings require both Atlas
code changes and RE cache persistence.
Problem
• dashboard/pom.xml runs npm install (not npm ci) into a fresh
target/atlas-webapp
• Node v22.14.0 is re-installed into target/atlas-build when target is recreated
• package.json prebuild runs a second npm install + webpack build for
atlas-lineage
• Production build runs full tsc before vite build
• RE builds use no_cache=True with no persisted NPM_CONFIG_CACHE → every build
downloads all packages from the registry (~15 min)
Scope — Atlas (dashboard module)
1. Change frontend-maven-plugin npm goal: install → ci (--no-audit --no-fund)
2. Configure NPM_CONFIG_CACHE via frontend-maven-plugin environmentVariables
(default: ~/.npm-cache/atlas-dashboard) and document path for RE
3. Move Node installDirectory outside target/ (e.g.
dashboard/.frontend-toolchain)
4. Optimize atlas-lineage prebuild to avoid redundant nested npm install on
every build
5. Use vite build for Maven packaging; keep tsc typecheck in verify/CI profile
6. Tune dashboard/.npmrc (audit=false, fund=false, prefer-offline=true)
7. Harden postinstall (ensure-native-deps.mjs) to avoid secondary npm fetches
on Linux
RE dependencies (required for full ~10–13 min install savings)
1. Persist npm content cache across P2 builds — must survive no_cache workspace
wipe
• Set before mvn: NPM_CONFIG_CACHE=<stable agent path, e.g.
/home/jenkins/.npm-cache/atlas-dashboard>
• Set: npm_config_prefer_offline=true
• Do not delete agent-level cache when no_cache=True clears workspace
2. Optional: Jenkins cache step or shared NFS cache for multi-agent farms
3. Optional: persist dashboard/.frontend-toolchain after Atlas moves Node out
of target/
4. Verify warm-cache behavior: second consecutive build on same agent should
show
dashboard npm step ~1–3 min vs ~15 min baseline
Out of scope
• Maven -T parallelism, Maven repo 404 resolver order, docs module skipDocs,
Nexus deploy lock wait
Acceptance criteria
• Atlas changes merged: npm ci, env cache config, lineage prebuild optimization
• RE confirms NPM_CONFIG_CACHE persisted on RHEL8 P2 atlas builds
• Documented before/after dashboard module time (cold vs warm cache)
• Cold first build on empty cache: acceptable ~12–15 min install
• Warm cache (same agent, unchanged lockfile): dashboard npm step < 3 min
• Functional parity: WAR/dist output unchanged, no regression in UI build
References
• Module: dashboard/pom.xml, dashboard/package.json, atlas-lineage prebuild
--
This message was sent by Atlassian Jira
(v8.20.10#820010)