Safeguard
Compliance•

How do you generate a third-party notices file in CI?

Build the notices file from your dependency inventory on every release: collect license texts and NOTICE content, dedupe, review gaps, and ship it.

Safeguard Security Team
3 min read

Generate a third-party notices file by taking your dependency inventory, collecting each component's license text, copyright lines and any NOTICE content, grouping identical texts, failing the build on gaps, and shipping the result with your product. Run it in CI at release time so the file always matches the artifact.

Why a generated file beats a hand edited one

Most permissive licenses require you to keep the notice when you redistribute. Apache 2.0 goes further: you must pass along a copy of the license, keep attribution notices, and carry the content of any NOTICE file. A hand edited file drifts from the real dependency set within weeks. A generated one is rebuilt from the same lockfile that built your release.

Pipeline steps

  1. Resolve the full dependency set from the lockfile, including transitive packages.
  2. For each package, fetch the license text and copyright notice from the package contents, not from a web page that may change.
  3. Collect NOTICE files for Apache 2.0 components.
  4. Group packages that share identical license text so the file stays readable.
  5. Fail the job when a package has no license text, an unknown license, or an unresolved expression.
  6. Publish the file next to the release artifact and store it with the build.
InputSourceFailure to catch
Package listLockfileMissing transitive packages
License textPackage tarballText absent or edited
NOTICE contentPackage tarballApache component without NOTICE capture
ExpressionPackage metadataUnparsed AND or WITH

What the file is not

It is not a security artifact and it does not replace your SBOM. It answers a legal question: what must a recipient be told? Your SBOM answers: what is in this software? Generate both from the same inventory so they agree. The REUSE specification is useful for your own code, since it asks for a license identifier and copyright line in each file plus a licenses directory with one text per license used.

Where it goes

For a web app, a page linked from the footer or about screen. For a mobile app, a screen in settings. For a binary download, a file in the archive. A fonts or assets section belongs here too, since those carry their own terms.

Try it yourself

Click through it at your own pace, or open it full screen.

Browse the inventory and imagine each row becoming one entry in a notices file.

Safeguard generates SBOMs from your dependencies, which gives you the inventory to build notices from. Try a free scan.

Quick check

Is a notices file the same as an SBOM?

No. The notices file carries legal text for recipients. The SBOM describes components for security and compliance use.

How often should it be regenerated?

At every release build, from the same lockfile as the release.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.