-
Notifications
You must be signed in to change notification settings - Fork 0
Home
BI pipeline automation for JasperReports Server, driven by Claude Code. A working reference that pairs a statewide Texas PostGIS geocoder with a JasperReports 7 report suite and a full server-automation toolkit — the jasper-deploy Claude Code plugin (49 scripts, 29 references, 4 slash commands) plus a self-service web wizard.
Built by the Actian SE team. Licensed Apache 2.0.
Quick links: Latest release · CHANGELOG · CI status · Security policy
- Install the plugin straight into Claude Code — no clone needed: 60-second install below
- Browse what the toolkit automates: SKILL.md capability map
- Planning a JasperReports Server upgrade? Go straight to the Upgrade and Migration Hub
- 10-minute orientation: ONBOARDING.md
- Full operational reference (build order, gotchas, script index): RUNBOOK.md
- Something failing? Check the Troubleshooting FAQ first
- Contribution guidelines — conventions, testing gates, and per-change-type definition-of-done checklists
- Issues use tailored bug report and feature request templates
- The tooling backlog worth picking up: Roadmap: Upgrade Automation Toolchain
In any Claude Code session:
/plugin marketplace add robertgorsuch/AI-JasperReports-Generator
/plugin install jasper-deploy@jaspersoft-tools
/reload-plugins
Then run /jasper-deploy:doctor — it preflight-checks the whole toolchain and tells you exactly what is missing.
Slash commands (since v1.1.0):
| Command | What it does |
|---|---|
/jasper-deploy:doctor |
Preflight the toolchain and server connectivity — run this first on a new machine |
/jasper-deploy:deploy |
Scaffold/compile/deploy a report from SQL or a .jrxml, then verify it renders |
/jasper-deploy:promote |
Promote a resource between environments (STAGE → PROD) with a target backup first |
/jasper-deploy:smoke |
Run the full 24-step lifecycle regression test |
The skill also activates on natural language — "scaffold a report from this query", "deploy this jrxml", "plan an upgrade from JRS 7.9 to 10.1".
Prerequisites (doctor checks all of these): PowerShell 5.1 or pwsh 7+ (Windows/macOS/Linux), JDK 11+, psql 14, curl 8.x, Python 3 with sqlglot + pypdfium2, a local JasperReports 7.0.6 jar directory, and a JasperReports Server 10.x Pro REST v2 endpoint.
| Piece | What it is |
|---|---|
| Texas geocoder | PostgreSQL 14 + PostGIS 3.4, all 254 counties via TIGER — 5.7M edges, 5M feature names, 2.7M address ranges |
| Report suite | JasperReports 7 templates: a 317-page density report, charts, crosstabs, drill-downs, dashboards |
| jasper-deploy plugin | 49 PowerShell/Python scripts automating the whole JRS lifecycle over REST v2: scaffold jrxml from SQL, lint, compile, deploy, dashboards, Domains, OLAP, themes, scheduling, permissions, STAGE→PROD promotion — plus the four slash commands above |
| Reference library | Doc-derived, page-cited references covering JRS 4.7 through 10.1: version deltas, platform cliffs, vendor EOL dates, and a cross-version upgrade/migration playbook |
| Web wizard | Jakarta servlet WAR putting the skill behind a browser UI for business users (internal, trusted-user tool — see the Security policy) |
flowchart LR
PG[(PostgreSQL + PostGIS)] --> SK[jasper-deploy skill<br/>49 scripts]
SK -->|REST v2| JRS[JasperReports Server 10]
WW[Web wizard WAR] -->|bundles the scripts| JRS
CC[Claude Code] -->|drives| SK
SK --> REF[References 4.7-10.1<br/>playbook, gotchas, version matrix]
The core pipeline: SQL query → scaffold_jrxml.py → JR7 .jrxml → lint (automatic) → compile → deploy_report.ps1 → verify (run to PDF, content asserts, visual baseline diff). Everything is JasperReports 7.0.6-native — the jrxml schema is not 6.x compatible, and the built-in linter exists precisely to catch 6.x-isms before the server rejects them at fill time.
Credentials resolve in priority order: script parameters → JRS_URL/JRS_USER/JRS_PASS environment variables → a gitignored jrs.config.json in the skill root (copy jrs.config.example.json). Extras:
-
passwordCommand— shell out to a secret manager instead of storing a password -
environments— named profiles used bypromote.ps1 -FromEnv stage -ToEnv prod -
jrLibDir— path to the JR 7.0.6 runtime jars
No credentials are stored in the repository; CI runs a full-history gitleaks scan on every push.
The scripts run unchanged on Windows PowerShell 5.1 and under pwsh 7 on Windows, macOS, and Linux — tool selection goes through helpers (Get-JrsCurl, Get-JrsPython, Get-JrsNull), paths use / separators, and curl JSON bodies come from files. The ubuntu CI leg keeps the claim honest on every push.
-
smoke_test.ps1— 24-step end-to-end lifecycle against a throwaway/reports/_smokefolder, asserting every step -
check_docs.ps1— doc/link consistency guard (every capability-map script exists, every link resolves) - Pester unit tests — offline tests for the linter and shared helpers
-
CI — the offline checks run on
windows-latest+ubuntu-lateston every push/PR; gitleaks scans full history; branch protection requires all three checks before merge - Releases — semver-tagged with a clean plugin payload zip attached
Do I need the demo database to use the plugin? No — the geocoder/census stack is the reference environment. The skill works against any PostgreSQL database and JRS 10.x server; /jasper-deploy:doctor validates yours.
Does it work with JRS 9.x or Community Edition? The scripts target JRS 10.x Pro over REST v2 and are verified there. Much of the REST surface exists in 9.x, and the reference library covers 4.7 → 10.1 for planning — but only 10.x Pro is exercised end to end.
Where do I report a security issue? Privately, via GitHub security advisories — never a public issue.
Is this affiliated with Cloud Software Group? No. Jaspersoft®, JasperReports®, and related marks are trademarks of Cloud Software Group, Inc.; this is an independent demo/reference project.
This wiki summarizes; the repository is canonical. Every fact here is maintained in a tracked file — follow the links.