feat!: migrate build system from Maven to Node.js/Gulp/semantic-release#69
Draft
joewiz wants to merge 6 commits intoeXist-db:masterfrom
Draft
feat!: migrate build system from Maven to Node.js/Gulp/semantic-release#69joewiz wants to merge 6 commits intoeXist-db:masterfrom
joewiz wants to merge 6 commits intoeXist-db:masterfrom
Conversation
58c99bd to
db4fd20
Compare
Replace Apache Maven build with Node.js + Gulp for building XAR packages and semantic-release for automated versioning and GitHub releases, modeled on the approach used in the roaster project (https://github.com/eeditiones/roaster). - Add package.json, gulpfile.js, expath-pkg.xml.tmpl, repo.xml.tmpl - Add .releaserc for semantic-release configuration - Add test/run-tests.js for XQSuite tests via HTTP against eXist-db - Add build.xml Ant wrapper for backward compatibility - Add .github/workflows/build.yml (replaces ci.yml + ci-docker-dev.yml) - Move content to content/ and test XQuery modules to test/ - Update .gitignore, dependabot.yml (maven → npm), README.md - Remove pom.xml, xar-assembly.xml, xquery-license-style.xml, src/ BREAKING CHANGE: Minimum eXist-db version is now 5.0.0. eXist-db 4.x is no longer supported. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test:install-all gulp task called install before the XAR existed. Add build as the first step so the XAR is ready before install runs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Use readOptionsFromEnv() with default options merged in (matching
roaster's approach) instead of manual URL parsing
- Pass replacements as array [app, {version, license}] matching roaster
- Use { unprefixed: true } so @Version@, @author@ etc. placeholders
are resolved without requiring a 'package.' prefix
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…n issue gulp-exist v4 defaulted to secure:true, causing the legacy compat shim in node-exist to override readOptionsFromEnv()'s 'http:' protocol with 'https:', resulting in an SSL error against eXist-db's plain HTTP port. Upgrading to gulp-exist v5 (following roaster's approach) resolves this cleanly. Also aligns with roaster by upgrading: - gulp v4 -> v5 - gulp-zip v5 -> v6 - gulp-rename v2.0 -> v2.1 - axios v0.27 -> v1.7 - dotenv-cli v4 -> v11 - semantic-release v17 -> v25 and related plugins - Adds "type": "module" and converts gulpfile.js and test/run-tests.js to ESM Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
roaster's CI uses port 8443 (HTTPS) and does not set EXISTDB_SERVER, relying on gulp-exist's default (secure:true, port:8443). Our CI was using port 8080 (HTTP) with EXISTDB_SERVER=http://localhost:8080, which clashed with that default and caused SSL errors. - build.yml: expose port 8443 instead of 8080; remove EXISTDB_* env vars - gulpfile.js: revert to roaster's plain defaultOptions (no serverUrl workaround) - test/run-tests.js: default to https://localhost:8443; allow self-signed cert - .env.example: update default to https://localhost:8443 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
expath-pkg.xml only allows EXPath-standard elements (title, dependency, component declarations like xquery). Elements like author, website, status, license, copyright, type, target belong in repo.xml only. Also switch from non-standard <module namespace pattern> to standard <xquery> component declaration, following roaster's approach. repo.xml.tmpl: add <copyright> and <type> to match roaster's template. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3f33771 to
49a4ae1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Key changes
package.json,gulpfile.js,expath-pkg.xml.tmpl,repo.xml.tmpl.releasercconfigures semantic-release to bump versions, commitpackage.json, and publish XAR as a GitHub release assettest/run-tests.js— Node.js script that invokes XQSuite via eXist-db's REST API and reports results.github/workflows/build.ymlreplaces oldci.yml+ci-docker-dev.yml; runs against eXist-dblatest,release, and5.0.0Docker imagesbuild.xmlfor backward compatibility (ant xar→npm run build)src/main/xquery/semver.xqm→content/semver.xqm;src/test/xquery/*.xqm→test/*.xqm;icon.pngmoved to rootpom.xml,xar-assembly.xml,xquery-license-style.xml,src/.gitignore(Maven → Node.js entries),dependabot.yml(maven → npm),README.md(build/test/release instructions)This commit uses the conventional commit format with a
BREAKING CHANGE:footer, so semantic-release will bump from3.0.1→4.0.0when merged to master.Test plan
npm installsucceedsnpm run buildproducesdist/semver-xq-3.0.1.xarcp .env.example .env && npm testpasses all XQSuite tests4.0.0GitHub release with XAR attached🤖 Generated with Claude Code