Skip to content

feat(ci): LuCLI-native Lucee 7 + SQLite CI pipeline#2032

Merged
bpamiri merged 5 commits intodevelopfrom
peter/lucli-ci-pipeline
Apr 9, 2026
Merged

feat(ci): LuCLI-native Lucee 7 + SQLite CI pipeline#2032
bpamiri merged 5 commits intodevelopfrom
peter/lucli-ci-pipeline

Conversation

@bpamiri
Copy link
Copy Markdown
Collaborator

@bpamiri bpamiri commented Apr 9, 2026

Summary

Replaces the CommandBox Docker-based CI with a fast LuCLI-native pipeline:

  • PR CI (pr.yml): LuCLI installs as a single binary, starts Lucee 7 directly on the runner, runs tests against SQLite. Target: ~2-3 minutes.
  • Develop CI (snapshot.yml): Same fast test gates the build → ForgeBox publish → docs sync chain.
  • Compat matrix (compat-matrix.yml): Full 5-engine × 7-database Docker Compose matrix runs weekly (Sunday 02:00 UTC) + manual dispatch. Non-blocking, informational only.

Motivation

The full matrix takes 40+ minutes and cross-engine differences increasingly block development. Lucee 7 + SQLite is the primary supported platform going forward.

Files changed

File Change
.github/workflows/pr.yml Rewritten: LuCLI-based fast test
.github/workflows/snapshot.yml Rewritten: fast test → build → sync-docs
.github/workflows/compat-matrix.yml New: standalone weekly/manual matrix
tools/ci/lucee.ci.json New: CI server config with SQLite datasource
tools/ci/run-tests.sh New: shared test runner with result parsing
.github/workflows/tests.yml Unchanged (kept for backward compat)

Test plan

  • PR CI runs LuCLI-based fast test successfully
  • Commit lint and auto-label still work
  • Verify LuCLI binary downloads and starts Lucee
  • Test results are parsed and reported correctly

🤖 Generated with Claude Code

…peline

Primary CI (PRs and develop pushes) now uses LuCLI to start Lucee 7
directly on the GitHub runner with SQLite. Targets ~2-3 min cycle time
instead of 40+ minutes with the full engine/DB matrix.

Changes:
- pr.yml: rewritten to install LuCLI binary, start Lucee 7 natively,
  run tests via curl against the test endpoint
- snapshot.yml: same fast test gating build + docs sync pipeline
- compat-matrix.yml: new standalone workflow with the full 5-engine x
  7-database Docker Compose matrix, triggered weekly (Sun 02:00 UTC)
  and via manual dispatch. Non-blocking/informational only.
- tools/ci/lucee.ci.json: CI-specific server config with SQLite datasource
- tools/ci/run-tests.sh: shared test runner script with result parsing
  and JUnit XML generation

The existing tests.yml is preserved as a reusable workflow for
backward compatibility with full-tests.yml.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@github-actions github-actions bot added the docs label Apr 9, 2026
bpamiri and others added 4 commits April 8, 2026 19:03
…ability

- Remove version from lucee.ci.json — let LuCLI use its default Lucee
  version instead of a specific build that may not exist on CDN
- Use `lucli server run` with nohup instead of backgrounded `server start`
  so download/startup failures are detected
- Add server process liveness check during startup wait
- Add debug log dump on failure

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Set Lucee version to 7.0.1.100 in lucee.ci.json (LuCLI was
  defaulting to 6.2.x without an explicit version)
- Download SQLite JDBC JAR and inject into Lucee's lib/ext after
  first server start, then restart to pick up the driver
- Add setup-datasources.cfm that registers SQLite datasources via
  Lucee admin API (copied to webroot temporarily during CI)
- Split server start into separate steps for better error visibility

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Define SQLite datasources directly in Application.cfc when WHEELS_CI
env var is set. This avoids needing Lucee Admin API credentials and
works reliably with LuCLI-managed Lucee instances.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The LuCLI server wasn't being fully stopped before restart, causing
port conflict errors. Now uses lucli server stop + fuser -k to ensure
the port is freed before restarting with the SQLite JDBC JAR.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bpamiri bpamiri merged commit 365f79b into develop Apr 9, 2026
2 of 3 checks passed
@bpamiri bpamiri deleted the peter/lucli-ci-pipeline branch April 9, 2026 03:24
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.

1 participant