A suite of tools to assist with reviewing Open Source Software dependencies. https://github.com/oss-review-toolkit/ort
Go to file
Sebastian Schuberth 6f4735e4ea ci(github): Make signing properties available to the distribution
Without these, signing is not configured and the respective tasks are
not available. This is a fixup for 37ec96b.

Signed-off-by: Sebastian Schuberth <sebastian@doubleopen.org>
2024-05-17 17:46:32 +02:00
.github ci(github): Make signing properties available to the distribution 2024-05-17 17:46:32 +02:00
.idea Add IntelliJ project icons derived from the ORT logo 2020-04-26 19:29:26 +02:00
.reuse refactor(docker): Define tool versions only once 2024-05-16 07:40:35 +02:00
LICENSES chore(reuse): Align formatting of files in the `LICENSES` directory 2024-04-13 05:49:15 +02:00
advisor build(Gradle): Use dashes to group dependencies 2024-01-20 10:27:34 +01:00
analyzer fix(analyzer): Serialize `sharedPackages` ordered by their `id` 2024-05-17 12:30:36 +02:00
buildSrc feat(gradle): Configure signing of distribution archives 2024-05-17 11:33:13 +02:00
cli test: Re-serialize a couple of test assets 2024-05-17 12:30:36 +02:00
clients feat(clients/osv): Align model with latest OSV schema version 1.6.3 2024-05-17 15:02:36 +02:00
detekt-rules build(Gradle): Use dashes to group dependencies 2024-01-20 10:27:34 +01:00
docker refactor(docker): Define tool versions only once 2024-05-16 07:40:35 +02:00
downloader chore(vcs): Remove some redundant failure logging 2024-04-26 11:17:12 +02:00
evaluator perf(evaluator): Turn a list into a sequence to address an inspection hint 2024-04-26 11:54:52 +02:00
examples chore(go): Drop the support for the Go dep package manager 2024-04-05 14:32:41 +02:00
gradle deps: Update the native-gradle-plugin to version 0.10.2 2024-05-17 17:22:22 +02:00
helper-cli fix(helper-cli): Fix broken reading of scan results by identifier 2024-05-03 15:38:05 +02:00
integrations chore(jenkins): Use the non-legacy `Dockerfile` 2024-04-27 17:30:40 +02:00
logos Revert "README: Add a Fosshost logo to give credit for their hosting services" 2022-01-03 20:12:13 +01:00
model fix(model): Serialize project's scope names in alphabetical order 2024-05-17 12:30:36 +02:00
notifier build(Gradle): Use dashes to group dependencies 2024-01-20 10:27:34 +01:00
plugins test: Re-serialize a couple of test assets 2024-05-17 12:30:36 +02:00
reporter chore(reporter): Remove a redundant `toMap()` call 2024-04-30 11:19:04 +02:00
scanner fix(scanner): Mention the correct source code origins in an error 2024-05-03 18:40:27 +02:00
scripts refactor(docker): Define tool versions only once 2024-05-16 07:40:35 +02:00
utils fix(spdx): Accept "additional-terms" as part of LicenseRef exceptions 2024-05-06 12:28:21 +02:00
website docs(website): Fix-up a package curation example 2024-04-19 13:00:15 +02:00
.codecov.yml ci(github): Fix the number of CodeCov action calls after which to comment 2024-04-22 16:05:16 +02:00
.commitlintrc.yml fix(commitlint): Disable `scope-case` checks 2023-01-20 12:51:45 +01:00
.detekt.yml chore(detekt): Remove an exception for an unused wildcard import 2023-12-01 21:44:24 +01:00
.dockerignore chore: Remove Batect as it has become unmaintained 2024-01-26 18:38:24 +01:00
.editorconfig style(detekt): Enable the "Indentation" rule 2023-08-30 16:37:55 +02:00
.gitattributes chore: Remove Batect as it has become unmaintained 2024-01-26 18:38:24 +01:00
.gitignore chore: Remove Batect as it has become unmaintained 2024-01-26 18:38:24 +01:00
.gitmodules build(Gradle): Move remaining Maven and Sbt package managers to projects 2023-11-06 18:14:54 +01:00
.jitpack.yml build(JitPack): Fix the docs task exclusion 2023-05-17 14:01:11 +02:00
.mailmap chore(mailmap): Use Martin's new Bosch address 2024-02-15 10:06:32 +01:00
.markdownlint-cli2.yaml style: Enable Markdownlint rule max-one-sentence-per-line 2024-03-09 13:04:34 +01:00
.markdownlint.yaml style: Disable line length limit for Markdown files 2024-03-07 15:28:22 +01:00
.ort.yml refactor(web-app-template): Use vite for builds 2024-04-16 21:56:46 +02:00
ADOPTERS.md docs: Add Double Open to the list of adopters 2024-04-30 10:36:47 +02:00
Dockerfile refactor(docker): Define tool versions only once 2024-05-16 07:40:35 +02:00
LICENSE License: Use the HTTPS link to the Apache 2.0 license in the template 2021-10-13 19:30:53 +02:00
NOTICE chore(NOTICE): Update the HERE Europe B.V. contribution year 2024-05-06 09:52:20 +02:00
README.md docs(README): Update CII links to OpenSSF 2024-05-17 11:33:13 +02:00
build.gradle.kts refactor(Gradle): Avoid the use of `{all,sub}projects` altogether 2024-04-29 16:27:46 +02:00
gradle.properties build(Gradle): Allow to configure the build JDK via toolchains 2024-03-14 09:34:36 +01:00
gradlew deps: update dependency gradle to v8.4 2023-10-05 06:47:45 +02:00
gradlew.bat deps: update dependency gradle to v8.6 2024-02-06 09:58:29 +01:00
mlc_config.json feat(package-manager): Add initial support for Bazel 2024-03-23 15:18:43 +01:00
qodana.yml deps: update jetbrains/qodana-action action to v2024 2024-04-26 08:30:13 +02:00
renovate.json ci(renovate): Extend from `config:recommended` 2024-04-09 17:06:18 +02:00
settings.gradle.kts feat(clients): Add Bazel module registry client 2024-03-23 15:18:43 +01:00

README.md

OSS Review Toolkit Logo

 

Slack

Wrapper Validation Static Analysis

Build and Test JitPack build status Code coverage

TODOs REUSE status OpenSSF Best Practices

Introduction

The OSS Review Toolkit (ORT) is a FOSS policy automation and orchestration toolkit that you can use to manage your (open source) software dependencies in a strategic, safe and efficient manner.

You can use it to:

  • Generate CycloneDX, SPDX SBOMs, or custom FOSS attribution documentation for your software project
  • Automate your FOSS policy using risk-based Policy as Code to do licensing, security vulnerability, InnerSource and engineering standards checks for your software project and its dependencies
  • Create a source code archive for your software project and its dependencies to comply with certain licenses or have your own copy as nothing on the internet is forever
  • Correct package metadata or licensing findings yourself, using InnerSource or with the help of the FOSS community

ORT can be used as a library (for programmatic use), via a command line interface (for scripted use), or via its CI integrations. It consists of the following tools which can be combined into a highly customizable pipeline:

  • Analyzer: Determines the dependencies of projects and their metadata, abstracting which package managers or build systems are actually being used.
  • Downloader: Fetches all source code of the projects and their dependencies, abstracting which Version Control System (VCS) or other means are used to retrieve the source code.
  • Scanner: Uses configured source code scanners to detect license / copyright findings, abstracting the type of scanner.
  • Advisor: Retrieves security advisories for used dependencies from configured vulnerability data services.
  • Evaluator: Evaluates custom policy rules along with custom license classifications against the data gathered in preceding stages and returns a list of policy violations, e.g. to flag license findings.
  • Reporter: Presents results in various formats such as visual reports, Open Source notices or Bill-Of-Materials (BOMs) to easily identify dependencies, licenses, copyrights or policy rule violations.
  • Notifier: Sends result notifications via different channels (like emails and / or JIRA tickets).

Also see the list of related tools that help with running ORT.

Documentation

For detailed information, see the documentation on the ORT Website.

Installation

System requirements

ORT is being continuously used on Linux, Windows and macOS by the core development team, so these operating systems are considered to be well-supported.

To run the ORT binaries (also see Installation from binaries) at least Java 11 is required. Memory and CPU requirements vary depending on the size and type of project(s) to analyze / scan, but the general recommendation is to configure Java with 8 GiB of memory and to use a CPU with at least 4 cores.

# This will give the Java Virtual Machine 8GB Memory.
export JAVA_OPTS="$JAVA_OPTS -Xmx8g"

If ORT requires external tools to analyze a project, these tools are listed by the ort requirements command. If a package manager is not list listed there, support for it is integrated directly into ORT and does not require any external tools to be installed.

From binaries

Preliminary binary artifacts for ORT are currently available via JitPack. Please note that due to limitations with the JitPack build environment, the reporter is not able to create the Web App report.

From sources

Install the following basic prerequisites:

  • Git (any recent version will do).

Then clone this repository.

git clone https://github.com/oss-review-toolkit/ort
# If you intend to run tests, you have to clone the submodules too.
cd ort
git submodule update --init --recursive

Build using Docker

Install the following basic prerequisites:

  • Docker 18.09 or later (and ensure its daemon is running).
  • Enable BuildKit for Docker.

Change into the directory with ORT's source code and run docker build -t ort .. Alternatively, use the script at scripts/docker_build.sh which also sets the ORT version from the Git revision.

Build natively

Install these additional prerequisites:

  • Java Development Kit (JDK) version 11 or later; also remember to set the JAVA_HOME environment variable accordingly.

Change into the directory with ORT's source code and run ./gradlew installDist (on the first run this will bootstrap Gradle and download all required dependencies).

Basic usage

Depending on how ORT was installed, it can be run in the following ways:

  • If the Docker image was built, use

    docker run ort --help
    

    You can find further hints for using ORT with Docker in the documentation.

  • If the ORT distribution was built from sources, use

    ./cli/build/install/ort/bin/ort --help
    
  • If running directly from sources via Gradle, use

    ./gradlew cli:run --args="--help"
    

    Note that in this case the working directory used by ORT is that of the cli project, not the directory gradlew is located in (see https://github.com/gradle/gradle/issues/6074).

Want to Help or have Questions?

All contributions are welcome. If you are interested in contributing, please read our contributing guide. To get quick answers to any of your questions, we recommend you join our Slack community.

License

Copyright (C) 2017-2024 The ORT Project Authors.

See the LICENSE file in the root of this project for license details.

OSS Review Toolkit (ORT) is a Linux Foundation project and part of ACT.