Skip to content

feat!: de-mavenize the build#183

Merged
line-o merged 1 commit into
eXist-db:masterfrom
joewiz:feature/demavenize
May 26, 2026
Merged

feat!: de-mavenize the build#183
line-o merged 1 commit into
eXist-db:masterfrom
joewiz:feature/demavenize

Conversation

@joewiz
Copy link
Copy Markdown
Member

@joewiz joewiz commented May 18, 2026

[This response was co-authored with Claude Code. -Joe]

Summary

Closes #180 by simplifying the release path. Modeled directly on monex@aa11953.

  • Replace Maven with Node.js/Gulp; gulp now assembles the XAR end-to-end (.build/dist/exist-function-documentation-<version>.xar)
  • Add expath-pkg.xml.tmpl / repo.xml.tmpl carrying the same dependency set as the prior xar-assembly.xml (exist 6.2.0 + html-templating 1.2.1) — no new runtime deps
  • Move app metadata (target, namespace, title, etc.) into package.json#app
  • Wire in semantic-release with conventional commits + commitlint
  • New CI: build → install via @existdb/xst → cypress → semantic-release on master
  • build.xml shim retained for downstream Ant callers

BREAKING CHANGE: builds now require Node.js (lts/*) instead of Maven.

Test plan

  • npm ci && npm run build produces a valid XAR locally
  • Generated expath-pkg.xml and repo.xml match the prior maven-templated output (same deps, same metadata)
  • All 9 cypress specs pass against existdb/existdb:latest
  • CI green
  • After merge, semantic-release tags v2.2.0 and uploads the XAR to the GitHub release

@joewiz joewiz marked this pull request as ready for review May 19, 2026 01:35
@joewiz joewiz force-pushed the feature/demavenize branch 4 times, most recently from 89d8ea7 to df97ca3 Compare May 20, 2026 03:19
@duncdrum
Copy link
Copy Markdown
Contributor

@joewiz needs a rebase

@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented May 25, 2026

[This response was co-authored with Claude Code. -Joe]

Rebased and force-pushed (a9a59964). One conflict on package.json — master's dependabot bump to sass ^1.100.0 collided with the demavenize branch's sass ^1.99.0; took master's bumped version. Regenerated package-lock.json against the merged package.json so the lock is consistent.

@line-o line-o requested review from duncdrum and line-o and removed request for line-o May 26, 2026 07:32
Comment thread .github/workflows/ci.yml Outdated
Comment thread .github/workflows/build.yml
@joewiz joewiz force-pushed the feature/demavenize branch from a9a5996 to e4a83f3 Compare May 26, 2026 14:18
@line-o line-o self-requested a review May 26, 2026 14:51
Copy link
Copy Markdown
Member

@line-o line-o left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am in favour of pulling this PR in now.
One last thing might be that not all commits have been made using conventional commit message format. So the changelog might not include all changes yet.

@line-o
Copy link
Copy Markdown
Member

line-o commented May 26, 2026

Good news: there is only two commits that do not follow conventional commits format
Bad news: at least one of them is important to be included into the change log 566024e

Replace Maven with a Node.js/Gulp build modeled on
eXist-db/monex@aa11953, and wire in semantic-release for
automated releases.

- Remove pom.xml, xar-assembly.xml, xquery-license-style.xml
- Rewrite gulpfile.js to assemble the XAR end-to-end:
  stage src/main/xar-resources/ into .build/, compile sass,
  copy vendor assets, expand *.tmpl tokens via
  @existdb/gulp-replace-tmpl, and zip to
  dist/exist-function-documentation-<version>.xar
- Add expath-pkg.xml.tmpl and repo.xml.tmpl as the single
  source of truth for package metadata, matching the deps
  declared in the prior xar-assembly.xml (exist 6.2.0 +
  html-templating 1.2.1). Move app fields (target,
  namespace, title, etc.) into package.json under "app"
- Add .releaserc, commitlint.config.js, .husky/commit-msg,
  and scripts/update-repo-changelog.js for semantic-release
- Replace Maven CI workflow with a Node build, install via
  @existdb/xst, Cypress test, and semantic-release job on
  master; add commitlint workflow
- Add build.xml shim for downstream tooling that calls Ant
- Drop maven ecosystem from dependabot.yml
- Ignore .build/, dist/, .env, .claude/

BREAKING CHANGE: builds now require Node.js (lts/*) instead
of Maven. Use \`npm ci && npm run build\` to produce the XAR.
@joewiz joewiz force-pushed the feature/demavenize branch from e4a83f3 to dafb0ef Compare May 26, 2026 18:42
@joewiz
Copy link
Copy Markdown
Member Author

joewiz commented May 26, 2026

[This response was co-authored with Claude Code. -Joe]

Thanks for the approval! On the conventional-commits / changelog gap you flagged: the only commit on this branch is the single feat!: de-mavenize the build, which is conventional and will trigger a major bump → v3.0.0. The non-conventional commits sit on master already (566024e [fix] Rewrite search queries... from #178; 87672ed Update src/main/xar-resources/data/docs/util/index-keys_5.md; b618192 [maven-release-plugin] prepare for next development iteration) and we don't want to rewrite shared history to fix them.

Pushed dafb0ef to handle this without history rewriting:

  1. Pre-populated <change version="3.0.0"> in repo.xml.tmpl covering [fix] Rewrite search queries to avoid parenthesised-step slow path #178 (the search-perf fix that wouldn't otherwise survive into the changelog). fix(documentation): add ngram-index to the list of indexes #152's docs fix is already covered by its sibling conventional commit 003fdd2 fix(documentation): ...; the maven-release-plugin commit is release-tooling noise we don't want in the changelog anyway.

  2. Made scripts/update-repo-changelog.js merge-aware: if a <change> for the next version already exists in the template (i.e. someone hand-authored an entry to capture non-conventional commits), the script now prepends the auto-generated items into its existing <ul> instead of inserting a duplicate <change> block above it. Existing inline markup (<a href="...">#NNN</a>) is preserved.

Net effect: when v3.0.0 cuts, the in-app changelog will contain the auto-generated items from the feat! commit plus the pre-populated #178 entry — in one block, in that order. No interference with the release version computation (still driven by commit-analyzer) or the GitHub release notes (still driven by release-notes-generator) — repo.xml.tmpl is purely for the in-app changelog view.

@line-o line-o merged commit 70cf198 into eXist-db:master May 26, 2026
4 checks passed
@github-actions
Copy link
Copy Markdown

🎉 This PR is included in version 3.0.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

@joewiz joewiz deleted the feature/demavenize branch May 26, 2026 22:48
duncdrum pushed a commit that referenced this pull request May 27, 2026
- Update build instructions to Node.js / npm (the Maven flow was removed
  in #183)
- Fix CI badge URL/name (workflow renamed ci.yml -> build.yml)
- Add Release Procedure section documenting the semantic-release flow,
  required conventional-commit format, and what contributors / release
  managers need to do
- Tidy installation and dependency wording

Closes #191
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Cut v7 friendly release

3 participants