Git Product home page Git Product logo

philips-software / bom-bar Goto Github PK

View Code? Open in Web Editor NEW
8.0 2.0 3.0 10.79 MB

Experimental web service for checking the software bill-of-materials ("SBOM") for projects against license violations.

License: MIT License

Java 58.39% HTML 0.33% Dockerfile 0.04% Shell 0.57% Dart 32.82% Swift 0.21% Ruby 0.32% Batchfile 0.10% CMake 1.97% C++ 5.07% C 0.18%
software-bill-of-materials sbom license-scanning-framework

bom-bar's Introduction

BOM-Bar

Release

Description: BOM-Bar is an experimental bill-of-materials aggregator and (license compatibility) policy validation service.

By uploading the latest bill-of-materials from every CI build, the BOM-Bar service can keep an inventory of all packages in use within an organization and provide feedback to the development team on potential (license) policy violations.

License compatibility detection takes individual package licenses, the target distribution and package relations into account. Violations can be manually overridden after investigation for packages that provide a package URL. (The Package URL is used as identifier to track such exemptions across bill-of-materials uploads.)

Package URLs also provide insights into the use of versions of packages, and the re-use of packages across projects.

Bill-of-materials files are uploaded as SPDX tag-value files, where relationships from the document are used to build the typed hierarchy of packages. This information is used to separate deliverable from development packages, and identify any originating project for a package version.

(See the architecture document for a detailed technical description.)

Dependencies

The service requires at least Java 11.

Installation

The Flutter web user interface is built by the install_ui script from the /ui directory. This script builds the web application and installs it into the /src/main/resources/static directory of the backend.

The Java backend software is built by the standard Maven mvn clean install command.

The server is started as a standard Java executable using java -jar <application-name>.jar.

Configuration

(Empty)

Usage

Web interface

After starting up, the service exposes on port 8080 (=default):

  • A user interface to browse projects for detected policy violations and packages and grant exemptions.
  • An API to upload SPDX software bill-of-materials documents in tag-value format by a POST request to /projects/<project_uuid>/upload.
  • A (basic) and insecure database management tool on url /h2. with default credentials "user" and "password".

Solving database migration issues

If migration of the database fails, a stand-alone database server can be started from the command line on Linux or Mac using:

java -jar ~/.m2/repository/com/h2database/h2/<version>/h2-<version>.jar

(Failed migrations can be manually corrected or removed in the "flyway_schema_history" table.)

Docker

After building the project, you can also run the application with Docker.

Build docker image:

docker build -f docker/Dockerfile -t bom-bar .

Run application:

docker run -p 8080:8080 bom-bar

Image from docker hub

Run application:

docker run -p 8080:8080 philipssoftware/bom-bar:latest

How to test the software

Java unit tests are executed by the Maven mvn clean test command.

Flutter unit tests are executed by the Flutter flutter test command from the /ui directory.

Known issues

The software is not suited for production use.

These are the most important topics that need to be addressed: (A marked checkbox means the topic is in progress.)

  • Import license obligations from e.g. OSADL

Future ideas:

  • Derive key technologies of projects from packages used
  • Track security vulnerabilities.

Disclaimer

BOM-Bar is an experimental tool and not a substitute for human review of each dependency for licensing or any other issues. It is not the goal of BOM-Bar to provide legal advice about licensing or any other issues. If you have any questions regarding licensing compliance for your code or any other legal issues relating to it, it’s up to you to do further research or consult with a professional.

Contact / Getting help

Submit an issue in the issue tracker of this project.

License

See LICENSE.md.

Credits and references

bom-bar's People

Contributors

anniejovitha avatar brend-smits avatar dependabot[bot] avatar jeroenknoops avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bom-bar's Issues

Create docker image

Create and push docker image for bombar

  • Create Dockerfile
  • Push docker image to artifactory

Build UI in CI/CD

The UI has moved from bom-bar-ui to this repository.

Make sure this is also build in the CI

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.