-
Notifications
You must be signed in to change notification settings - Fork 164
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
github: Add GH Action to check SPDX license headers in new files.
- Created a workflow to automatically check for SPDX license headers in new files when a PR is opened or changes are pushed to `master` or version-stable branches. - Added `tools/spdx-check.sh` script that scans new files with specific extensions and certain filenames for the `SPDX-License-Identifier` header. - The script excludes files in `vendor/` directories from the check. - The workflow will fail if any of the new files are missing the required SPDX license header. Signed-off-by: Nikolay Martyanov <[email protected]>
- Loading branch information
1 parent
8c5b27a
commit 18e31f1
Showing
2 changed files
with
81 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
# SPDX-License-Identifier: Apache-2.0 | ||
--- | ||
name: Check SPDX License Headers | ||
|
||
on: | ||
push: | ||
branches: | ||
- "master" | ||
- "[0-9]+.[0-9]+" | ||
- "[0-9]+.[0-9]+-stable" | ||
pull_request: | ||
branches: | ||
- "master" | ||
- "[0-9]+.[0-9]+" | ||
- "[0-9]+.[0-9]+-stable" | ||
|
||
jobs: | ||
spdx-check: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout code | ||
uses: actions/checkout@v4 | ||
with: | ||
ref: ${{ github.event.pull_request.head.sha }} | ||
|
||
- name: Run SPDX check | ||
run: | | ||
chmod +x ./tools/check_spdx.sh | ||
./tools/check_spdx.sh |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
#!/bin/bash | ||
|
||
# Copyright (c) 2024 Zededa, Inc. | ||
# SPDX-License-Identifier: Apache-2.0 | ||
|
||
# List of files to check, excluding vendor directories | ||
files=$(git diff --name-only --diff-filter=A origin/master..HEAD | grep -v "vendor/") | ||
|
||
# SPDX License Identifier to check for | ||
license_identifier="SPDX-License-Identifier:" | ||
|
||
# Array of file extensions to check for SPDX header | ||
file_extensions=("sh" "c" "go" "py" "rs" "yaml" "yml") | ||
file_names=("Dockerfile" "Makefile") | ||
|
||
# Flag to check if all files contain the SPDX header | ||
all_files_contain_spdx=true | ||
|
||
# Loop through the files and check for the SPDX header | ||
for file in $files; do | ||
# Get the file extension | ||
file_extension="${file##*.}" | ||
|
||
# Check if the file is a source file that should have a license header | ||
for ext in "${file_extensions[@]}"; do | ||
if [[ "$file_extension" == "$ext" ]]; then | ||
# Check if the file contains the SPDX identifier | ||
if ! grep -q "$license_identifier" "$file"; then | ||
all_files_contain_spdx=false | ||
echo "Missing SPDX-License-Identifier in $file" | ||
fi | ||
break | ||
fi | ||
done | ||
for name in "${file_names[@]}"; do | ||
if [[ "$file" == "$name" ]]; then | ||
# Check if the file contains the SPDX identifier | ||
if ! grep -q "$license_identifier" "$file"; then | ||
all_files_contain_spdx=false | ||
echo "Missing SPDX-License-Identifier in $file" | ||
fi | ||
break | ||
fi | ||
done | ||
done | ||
|
||
if [ "$all_files_contain_spdx" = true ]; then | ||
echo "All files contain SPDX-License-Identifier." | ||
exit 0 | ||
else | ||
exit 1 | ||
fi |