Commit graph

51 commits

Author SHA1 Message Date
nscuro
f793992857
Centralize test DB lifecycle and reuse across modules
Allows the multi-module build to exploit testcontainer reuse by centralizing the setup and table truncation logic in a separate module.

With this change, migrations only run for the first module, once, in a full test suite run. Instead of each module booting its own testcontainer, they all use the same instance, provided reuse is enabled (which it is in CI).

Also removes code duplication caused by repeated testcontainers setup logic.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-06-17 00:52:57 +02:00
dependencytrack-bot
f5cf20f026 [maven-release-plugin] prepare for next development iteration 2026-06-07 15:27:21 +00:00
dependencytrack-bot
a51c955ad2 [maven-release-plugin] prepare release 5.0.0 2026-06-07 15:27:16 +00:00
dependencytrack-bot
7298c77a8b [maven-release-plugin] prepare for next development iteration 2026-06-05 22:48:47 +00:00
dependencytrack-bot
701043c077 [maven-release-plugin] prepare release 5.0.0-rc.5 2026-06-05 22:48:42 +00:00
dependencytrack-bot
1fe2611bb3 [maven-release-plugin] prepare for next development iteration 2026-06-03 14:45:13 +00:00
dependencytrack-bot
fbbab9049f [maven-release-plugin] prepare release 5.0.0-rc.4 2026-06-03 14:45:06 +00:00
dependencytrack-bot
4c833cf311 [maven-release-plugin] prepare for next development iteration 2026-06-02 11:21:38 +00:00
dependencytrack-bot
05a2222ea9 [maven-release-plugin] prepare release 5.0.0-rc.3 2026-06-02 11:21:32 +00:00
dependencytrack-bot
a42ac9f35f [maven-release-plugin] prepare for next development iteration 2026-05-31 23:19:14 +00:00
dependencytrack-bot
b04284e250 [maven-release-plugin] prepare release 5.0.0-rc.2 2026-05-31 23:19:08 +00:00
dependencytrack-bot
073d435d22 [maven-release-plugin] prepare for next development iteration 2026-05-28 18:59:58 +00:00
dependencytrack-bot
17cb4067bd [maven-release-plugin] prepare release 5.0.0-rc.1 2026-05-28 18:59:53 +00:00
nscuro
16b818f052
Prepare 5.0.0-rc.1 release
* Replaces all remaining `hyades-*` references with the canonical `dependency-track`.
* Resets version from `5.7.0-alpha.10-SNAPSHOT` to `5.0.0-rc.1-SNAPSHOT`.
* Updates README to mention that v5 is not yet GA, and where to find v4.
* Updates the defect report issue template to reflect the major version split.
* Selfishly lists myself as developer in the Maven POM.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-05-28 20:32:06 +02:00
dependencytrack-bot
f020b3664b [maven-release-plugin] prepare for next development iteration 2026-05-27 22:05:57 +00:00
dependencytrack-bot
364cff3803 [maven-release-plugin] prepare release 5.7.0-alpha.9 2026-05-27 22:05:52 +00:00
nscuro
cd6e87268b
Remove "default extension" concept
We no longer have a case where only a single extension of a given extension point is requested, so the concept of default extensions is no longer useful.

Similarly, required extensions are no longer a thing. All extension points we have can handle 0..N extensions.

This simplifies the plugin API by dropping baggage we don't need.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-05-27 18:42:51 +02:00
dependencytrack-bot
5978f1f5b3 [maven-release-plugin] prepare for next development iteration 2026-05-20 09:47:38 +00:00
dependencytrack-bot
20362d4f03 [maven-release-plugin] prepare release 5.7.0-alpha.8 2026-05-20 09:47:32 +00:00
nscuro
bf5c3b322f
Compile against Java 25
Raises the Java baseline from 21 to 25, and leverages new language features:

* Replaces the various "ignored" and "ignoredMdc" variables with `_`.
* Replaces hand-rolled batching / partitioning logic with `windowFixed(n)` stream gatherers.

Note that we already shipped with a Java 25 base image for a long while, so there are no runtime-related changes.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-05-18 20:23:57 +02:00
dependencytrack-bot
4eac78e2fa [maven-release-plugin] prepare for next development iteration 2026-05-11 20:49:28 +00:00
dependencytrack-bot
a5e3363770 [maven-release-plugin] prepare release 5.7.0-alpha.7 2026-05-11 20:49:23 +00:00
nscuro
42c7414915
Update version references in code to 5.0.0
Since we're going to re-version to 5.0.0 as part of the GA cut-over, it would be confusing if code comments such as `@since` Javadoc tags refer to higher versions.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-05-08 20:32:22 +02:00
dependencytrack-bot
894c49683f [maven-release-plugin] prepare for next development iteration 2026-05-08 11:27:01 +00:00
dependencytrack-bot
f18aa21d3b [maven-release-plugin] prepare release 5.7.0-alpha.6 2026-05-08 11:26:56 +00:00
dependencytrack-bot
5480ab908c [maven-release-plugin] prepare for next development iteration 2026-05-02 21:48:35 +00:00
dependencytrack-bot
812097272f [maven-release-plugin] prepare release 5.7.0-alpha.5 2026-05-02 21:48:30 +00:00
nscuro
0f092b59e7
Switch migrations from Liquibase to Flyway
Verified manually that the schema produced by the Flyway baseline match the schema produced by Liquibase. No point in adding an automated test for this.

Also verified that an instance with existing Liquibase schema migrates cleanly to Flyway, including removal of Liquibase's `databasechangelog` and `databasechangeloglock` tables.

To compensate for the removal of the Liquibase Maven plugin, a new `migrate` command has been added to the apiserver CLI. As a side effect, this now allows users without a full development setup to generate SQL migration files.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-05-02 23:13:56 +02:00
dependencytrack-bot
0be6bd9c72 [maven-release-plugin] prepare for next development iteration 2026-05-02 20:23:58 +00:00
dependencytrack-bot
9ada9297a2 [maven-release-plugin] prepare release 5.7.0-alpha.4 2026-05-02 20:23:52 +00:00
nscuro
12eeeddbfa
Remove toggle to disable loading of extensions
This was originally necessary because `FileStorage` was an extension point, and it didn't make sense to load the s3 provider when only the local provider was used. We have since moved all infra-level concerns *away* from the extension mechanism, so this use-case no longer exists.

Once we add support for loading extensions from external plugins, we'll need a similar mechanism, but most likely one with opt-in rather than opt-out semantics (i.e. operators decide explicitly what to load).

Until then, this toggle only adds unnecessary config surface.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-04-27 12:53:15 +02:00
nscuro
68acead9e4
Replace legacy Alpine Config entirely with MicroProfile Config
Signed-off-by: nscuro <nscuro@protonmail.com>
2026-04-25 23:34:13 +02:00
dependencytrack-bot
8e1f9e91eb [maven-release-plugin] prepare for next development iteration 2026-04-22 14:21:38 +00:00
dependencytrack-bot
c2b63e4f7f [maven-release-plugin] prepare release 5.7.0-alpha.3 2026-04-22 14:21:33 +00:00
nscuro
e026cdae25
Streamline plugin API
* Decouples runtime configuration and testing from the ExtensionFactory interface into separate RuntimeConfigurable and Testable interfaces.
* Replace ExtensionContext with a more generic ServiceRegistry, which will be easier to extend going forward.
* Improve naming of various classes, e.g. ExtensionKVStore -> KeyValueStore.
* Updates the extensions REST API to indicate whether a given extension supports runtime configuration or testing.
* Aligns response of extension list endpoints with others in the API.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-04-21 20:02:30 +02:00
nscuro
1313ec8fed
Extract plugin infrastructure from apiserver module
Since the plugin infrastructure around `PluginManager` is fairly self-contained, it should not live in the apiserver module, which is already quite large.

This extracts the plugin infra and moves it to a dedicated plugin-runtime module. This also makes the code easier to discover for new contributors.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-04-21 14:33:13 +02:00
nscuro
04eaac725c
Ignore x-i18n keyword during extension JSON schema validation
The keyword is used for internationalization.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-04-03 17:34:18 +02:00
dependencytrack-bot
fb2a855454 [maven-release-plugin] prepare for next development iteration 2026-02-27 21:17:16 +00:00
dependencytrack-bot
f4ea1baac8 [maven-release-plugin] prepare release 5.7.0-alpha.2 2026-02-27 21:17:11 +00:00
dependencytrack-bot
2a8c5225d7 [maven-release-plugin] prepare for next development iteration 2026-02-12 15:51:59 +00:00
dependencytrack-bot
231768fd7e [maven-release-plugin] prepare release 5.7.0-alpha.1 2026-02-12 15:51:53 +00:00
nscuro
3bba529697
Complete notification publishing migration
* Enables notification router and removes feature flag.
* Implements dex workflow for publishing.
* Removes direct publishing to Kafka.
* Adds partial rule filtering at notification emission time.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-28 21:22:03 +01:00
nscuro
83dc62bd6e
Bump version to 5.7.0-alpha.1-SNAPSHOT
Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-27 20:25:11 +01:00
dependencytrack-bot
794c930a86 [maven-release-plugin] prepare for next development iteration 2026-01-27 19:05:10 +00:00
dependencytrack-bot
3c729006b7 [maven-release-plugin] prepare release 5.7.0-alpha.0 2026-01-27 19:05:05 +00:00
nscuro
a609892c4f
Perform semantic extension config validation in Java
This makes JSON schemas easier to evolve and validation logic easier to modify.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-23 16:52:00 +01:00
nscuro
601200c68a
Isolate plugin API
* Removes proto dependency from plugin-api.
* Move vuln data source API to separate module, similar to file-storage-api and notification-api.

This is necessary to retain clear responsibilities and avoid circular module dependencies.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-19 00:17:00 +01:00
nscuro
0645cc1556
Apply consistent module naming
Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-18 19:38:24 +01:00
nscuro
1ee1ca79a0
Remove config templating in favour of explicit secret references
After extensive testing and some initial user feedback, it became clear that expressions / templating provides horrible UX, because:

* It's not clear where expressions can be used.
* Expressions are only evaluated at runtime, so users don't get feedback when they reference secrets that don't exist.
* Non-technical users struggle with expression syntax.

Additionally, we don't really *need* the flexibility expressions give us. We just need a way to safely reference managed secrets.

This change introduces support for the `x-secret-ref` JSON schema annotation. Properties annotated with it will be treated as secret references.

When extensions retrieve their runtime config, secret references are transparently resolved.

When extension configs are updated via REST API, it's validated that all referenced secrets exist.

Secret managers now support pagination and filtering for the `listSecrets` operation. This is used to deliver a convenient dropdown with search-as-you-type in the UI. Note that it is expected that not all providers can support pagination natively, in which case they'll need to emulate the desired behaviour, which is what the `env` provider does.

Listing secret metadata no longer requires the `SECRET_MANAGEMENT_READ` permission, but the `SYSTEM_CONFIGURATION_READ` permission. This is because users who maintain configuration are actually the ones that need to know which secrets they can use.

Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-15 16:53:35 +01:00
nscuro
78d1184b45
Implement notification publisher extension point
Signed-off-by: nscuro <nscuro@protonmail.com>
2026-01-04 18:05:43 +01:00