Development
Contributor documentation for developing and testing dwarvenpick.
Local checks
Backend:
./gradlew clean ktlintCheck test
Frontend:
cd frontend
npm ci
npm run lint
npm run format:check
npm run test
npm run build
Local stack (Docker Compose)
For UI + integration smoke tests (including OIDC SSO via Keycloak):
docker compose -f deploy/docker/docker-compose.yml up -d --build
Open:
- UI:
http://localhost:3000 - Keycloak admin:
http://localhost:8081(admin / admin)
LDAP integration tests
LDAP authentication is covered by a Testcontainers-based integration test suite and requires Docker:
./gradlew :backend:app:test --tests com.dwarvenpick.app.auth.LdapAuthContainerTests
Datasource integration tests
Query execution is covered by Testcontainers-based integration tests (Postgres, MySQL, Trino) and requires Docker:
./gradlew :backend:app:test --tests com.dwarvenpick.app.QueryExecutionManagerContainerTests
Versioning and releases
dwarvenpick uses Git tags for release versions.
- Dev builds default to
0.4.2-SNAPSHOT. - Release builds use the pushed tag name (for example
v0.4.2becomes version0.4.2).
To cut a release:
- Create a tag:
git tag v0.4.2
git push origin v0.4.2
- GitHub Actions runs the
Releaseworkflow and publishes a GitHub Release with:- versioned backend jar
- versioned Helm chart package
To build a versioned jar locally without tagging:
DWARVENPICK_VERSION=0.4.2 ./gradlew :backend:app:bootJar