Dependency-Check Jenkins Users,
With Dependency-Check v5 (once released) there will be some exciting enhancements, and breaking changes. The Jenkins plugin is built on top of another plugin called analysis-core. Analysis-core is the plugin that does all the visualization, presents graphs, per job results, and optionally breaks builds on warning or failed states (doesn’t really work that well). Analysis-core is also deprecated and we need to get off of it. It also doesn’t support four severity categories and a host of other things we need.
There are two paths forward and this is the reason I’m requesting community feedback
This migration can take a few paths:
- Migrate from Analysis-core to it’s replacement, Warnings NG. This migration itself has two paths:
- Create a generic dependency-check parser for WarningsNG and every single WarningsNG installation will have the ability to parse Dependency-Check reports. This is not a security plugin - it will not have Vulnerability Source (NVD, NPM, etc), nor will it have Severity (but will have Priority). Its the exact same view as you’ll find with FindBugs, CheckStyle, PMD, etc. It will also not have a builder - you’ll need to use the Dependency-Check CLI for that. The CLI and the Jenkins builder actually do the same thing and get the same results. So it’s a bit redundant anyway.
- Rewrite the Dependency-Check plugin for WarningsNG. This will be a lot of work without any known path to success - we will be the first security plugin to be written on top of WarningsNG v3 to the best of my knowledge. We may run into issues and there will likely not be a Jenkins plugin available by the time Dependency-Check v5 is released. Based on my capacity, this likely will not occur until Q3 at the earliest. However, going down this path, we can keep all existing functionality.
- Rewrite the Dependency-Check plugin based on the Dependency-Track plugin. The Dependency-Track Jenkins plugin isn’t based on a third-party Jenkins plugin. Its simpler, security specific, but doesn’t have all the views that the Dependency-Check plugin does, nor are there plans on doing so. This code can easily be reused and ported to Dependency-Check without much effort. It supports breaking builds or putting them in a warning state, dynamic trends, and dynamic per job findings. Some of the views that this plugin doesn’t have are filtering by CWE, support for viewing only new or fixed issues, and displaying CVE references (although references would be easy to add).
In all cases, existing jobs that are configured with the Dependency-Check publisher to break or put builds in a warning state will be lost. This configuration will need to be redone for every job regardless of the migration approach taken. Historical vulnerability trends (including new/fixed) will also be lost. And finally, once the migration is complete, all prior versions of the Dependency-Check Jenkins plugin (v4.x, v3.x, etc) will no longer be supported.
To compare screenshots between the Dependency-Check, Warnings NG, and Dependency-Track Jenkins plugin, please refer to the following:
This will give you an idea of the graphical views that each plugin has. Dependency-Check has more views - it benefits from this because it doesn’t have a central console containing all the details. Dependency-Track plugin is simpler because it has a web console and notifications on new findings.
So community, please express your thoughts and opinions, especially if you have strong feelings one way or the other. I will likely start working on the migration in the next week or two, so the sooner I get feedback, the better. If you want to forward this email to others in your org to get their feedback, please do so. And finally, if we decide to go down the WarningsNG rewrite path, let me know if you’re interested in volunteering to assist in this effort.
— Steve