license
License Checks
Check and fix license compliance using skywalking-eyes. Two CI jobs use this tool:
- license-header — verifies all source files have Apache 2.0 headers
- dependency-license — verifies the LICENSE file matches current dependencies
Steps
Header check (default, or check argument)
license-eye header check
- All valid: Output shows
valid: N, invalid: 0— nothing to do. - Invalid files found: Fix with
license-eye header fix, then re-check.
Header fix (fix argument)
license-eye header fix
license-eye header check
Dependency license check (deps argument)
This regenerates the LICENSE file from dependency metadata and checks for drift:
license-eye dependency resolve --summary ./dist-material/release-docs/LICENSE.tpl || exit 1
if [ ! -z "$(git diff -U0 ./dist-material/release-docs/LICENSE)" ]; then
echo "LICENSE file is not updated correctly"
git diff -U0 ./dist-material/release-docs/LICENSE
fi
If the LICENSE file changed, review the diff and commit it. Important: CI runs on Linux — some dependencies have platform-specific variants. If you're on macOS/Windows, the LICENSE diff may be a platform artifact. Verify before committing.
Rules
Configuration is in .licenserc.yaml:
- Java, XML, YAML/YML files require Apache 2.0 headers
- JSON and Markdown files are excluded (JSON doesn't support comments)
- Generated files and certain vendor paths are excluded
- SPI service files (
META-INF/services/) require headers (use#comment style)
Installation
# Same version as CI (pinned commit)
go install github.com/apache/skywalking-eyes/cmd/license-eye@5b7ee1731d036b5aac68f8bd3fc9e6f98ada082e
# Or via Homebrew (macOS)
brew install license-eye
More from apache/skywalking
compile
Build SkyWalking OAP server, run javadoc checks, and verify checkstyle. Use to validate changes before submitting a PR.
1test
Run unit tests, integration tests, or slow integration tests matching CI. Use to validate changes before submitting a PR.
1gh-pull-request
Verify, commit, and push changes on a PR branch. Runs pre-flight checks (compile, checkstyle, license headers) before every push. Also creates the PR if one doesn't exist yet.
1generate-classes
Generate bytecode classes from DSL scripts (MAL, OAL, LAL, Hierarchy). Runs the compiler and dumps .class files for inspection.
1