Fetch Licenses #237
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
name: Fetch Licenses | |
on: | |
workflow_dispatch: | |
inputs: | |
force_run: | |
description: 'Force run license extraction' | |
required: false | |
default: 'false' | |
schedule: | |
- cron: '5 4 * * *' # Runs at 0405 UTC (0605 CET, 0005 ET, 2105 PT) | |
jobs: | |
fetch-licenses: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Git | |
run: | | |
git config --global user.name "GitHub Actions" | |
git config --global user.email "github-actions[bot]@users.noreply.github.com" | |
- name: Checkout this repository | |
uses: actions/checkout@v4 | |
- name: Checkout official SPDX Repository | |
uses: actions/checkout@v4 | |
with: | |
repository: spdx/license-list-data | |
path: official-spdx-licenses # creates a tmp dir to hold the SPDX licenses from the official repo | |
- name: Copy Licenses | |
run: | | |
cp official-spdx-licenses/json/licenses.json cmd/licenses.json | |
cp official-spdx-licenses/json/exceptions.json cmd/exceptions.json | |
- name: Get date | |
id: date | |
run: echo "DT_STAMP"=$(date +'%Y-%m-%d %H:%M UTC') >> $GITHUB_ENV | |
- name: Check for changes | |
id: changes | |
run: | | |
has_changes=true | |
# --quiet: Exits with 1 if there are changes; otherwise, exits with 0 | |
# exiting with anything other than 0 implies the command failed and the command following && will not execute leaving has_changes set to true | |
# exiting with 0 implies the command was successful and the command following && will be executed setting has_changes to false | |
git diff --quiet -- cmd/licenses.json cmd/exceptions.json && has_changes=false | |
if [ $has_changes != 'true' ]; then | |
if [ ${{ github.event.inputs.force_run }} == 'true' ]; then | |
echo -e '***************\nNo changes, but skipping abort due to force run\n***************' | |
else | |
echo -e '***************\nABORTING: No changes to license data\n***************' | |
fi | |
fi | |
echo "HAS_CHANGES"=$has_changes >> $GITHUB_ENV | |
- name: Run license extraction | |
if: ${{ env.HAS_CHANGES == 'true' || github.event.inputs.force_run == 'true' }} | |
run: | | |
cd cmd | |
echo "Current branch: $(git branch)" | |
go run . extract -l -e | |
cd .. | |
git log --oneline -n 5 | |
- name: Create Pull Request | |
if: ${{ env.HAS_CHANGES == 'true' || github.event.inputs.force_run == 'true' }} | |
uses: peter-evans/create-pull-request@v7 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: Add updated license files | |
branch: auto-update-licenses | |
base: main | |
title: "Update SPDX license files (${{ env.DT_STAMP }})" | |
body: "The files in this PR are auto-generated by the [fetch-licenses](./.git/workflows/fetch-license.yaml) workflow when it runs the `extract` command defined in [cmd/main.go](./cmd/main.go). It updates SPDX licenses based on the latest released set in the [spdx/license-list-data](https://github.com/spdx/license-list-data) repository maintained by [SPDX](https://spdx.org/licenses/). \n\nTODO: [spdxexp/spdxlicenses/license_ranges.go](./spdxexp/spdxlicenses/license_range.go) has to be updated manually." | |
labels: 'auto-update,licenses' |