This repository is a Copier template for generating SBOMer Enhancer microservices. Enhancers are Quarkus-based event-driven applications that consume SBOM URLs from Kafka enhancement.created events, mutate or append metadata (e.g. using CycloneDX), and upload the results back to SBOMer's manifest storage platform.
To prevent Jinja templating errors in IDEs and to keep the Java codebase compilable.
java-project/: Code Here. The compilable Java source code and Helm charts. Use this directory for all active development. Do not change the "Example Enhancer" and "example-enhancer" references in the project. These are used to inject template texts later upon generation.generate-template.sh: The build script that injects Jinja variables into the source code and outputs the final Copier template.copier.yml: The configuration file containing questions and variables for Copier.generated_template/: (Auto-generated) The final, pure Copier skeleton. Do not edit files here directly.generated-test-project/: (Auto-generated) A live, functioning test project (test-enhancer) stamped out by the script for immediate Minikube deployment.
To develop or generate projects from this template, you need:
- Python 3.8+ & Copier (
pip install copier) - Java 17+ & Maven
- Docker or Podman
- Minikube & Helm (for local cluster testing)
For modifying the base template (e.g., adding new Java classes, updating the Helm chart, changing adapter logic), we follow this loop:
- Write Code: Make the changes inside the
java-project/directory. Our IDE will work perfectly here. - Build the Template & Test Sandbox: Run the generation script from the repository root:
./generate-template.sh
- Deploy to Minikube: Move into the newly generated test sandbox and trigger the local deployment script:
cd generated-test-project ./hack/run-helm-with-local-build.sh
Note: This script will automatically build the enhancer image inside the Minikube registry, upsert the dependency into the sbomer-platform umbrella chart, and perform a rolling restart.
The actual Copier template lives inside the generated_template folder. When stamping out a brand-new, permanent Enhancer repository, we must point Copier directly to that subdirectory.
- Ensure the template is up to date:
Run the generation script to make sure
generated_templatehas the latest changes fromjava-project../generate-template.sh
- Run Copier: Point the Copier CLI to the generated_template directory and specify your target destination folder:
# If we are inside this repository's root: copier copy ./generated_template ../my-new-enhancer - Answer the Prompts: The CLI will ask us for our project's human-readable name and machine-readable slug.
- Start Coding: We then navigate to the my-new-enhancer directory, initialize a new Git repository, and begin our business logic implementation.