From fd9f68f2a2db8f7d9272e7905790b26ef54844a1 Mon Sep 17 00:00:00 2001 From: "E. Lynette Rayle" Date: Wed, 21 May 2025 09:32:42 -0400 Subject: [PATCH 1/4] update Fetch Licenses workflow to only create a PR if the generated files changed Also adding the ability to force tests to run. They get stuck sometimes in PRs. This avoids the need to do a minor change like adding whitespace to a file just to get the tests to run. --- .github/workflows/fetch-licenses.yaml | 41 +++++++++++++++++++-------- .github/workflows/test.yaml | 1 + 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/.github/workflows/fetch-licenses.yaml b/.github/workflows/fetch-licenses.yaml index c0e23e5..ff3443a 100644 --- a/.github/workflows/fetch-licenses.yaml +++ b/.github/workflows/fetch-licenses.yaml @@ -41,25 +41,24 @@ jobs: id: date run: echo "DT_STAMP"=$(date +'%Y-%m-%d %H:%M UTC') >> $GITHUB_ENV - - name: Check for changes - id: changes + - name: Check for changes in SPDX json files + id: src-changes run: | - has_changes=true + src_changed=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 + git diff --quiet -- cmd/licenses.json cmd/exceptions.json && src_changed=false + if [ $src_changed != 'true' ]; then if [ ${{ github.event.inputs.force_run }} == 'true' ]; then - echo -e '***************\nNo changes, but skipping abort due to force run\n***************' + echo -e '***************\nNo changes in spdx json, but skipping abort due to force run\n***************' else - echo -e '***************\nABORTING: No changes to license data\n***************' + echo -e '***************\nABORTING: No changes to spdx json data\n***************' + exit 0 fi fi - echo "HAS_CHANGES"=$has_changes >> $GITHUB_ENV + echo "src_changed"=$src_changed >> $GITHUB_ENV - name: Run license extraction - if: ${{ env.HAS_CHANGES == 'true' || github.event.inputs.force_run == 'true' }} + if: ${{ env.src_changed == 'true' || github.event.inputs.force_run == 'true' }} run: | cd cmd echo "Current branch: $(git branch)" @@ -67,8 +66,26 @@ jobs: cd .. git log --oneline -n 5 + - name: Check for changes in generated files + id: genfiles-changes + run: | + genfiles_changed=true + # --quiet: Exits with 1 if there are changes; otherwise, exits with 0 + git diff --quiet -- spdxexp/spdxlicenses/*.go && genfiles_changed=false + if [ $genfiles_changed != 'true' ]; then + if [ ${{ github.event.inputs.force_run }} == 'true' ]; then + echo -e '***************\nNo changes to generated files, but skipping abort due to force run\n***************' + else + # This happens when the generated files are already up to date + # or the only changes in the source json are data not included in the generated files (e.g. IDs) + echo -e '***************\nABORTING: No changes to license data in generated files\n***************' + exit 0 + fi + fi + echo "genfiles_changed"=$genfiles_changed >> $GITHUB_ENV + - name: Create Pull Request - if: ${{ env.HAS_CHANGES == 'true' || github.event.inputs.force_run == 'true' }} + if: ${{ env.genfiles_changed == 'true' || github.event.inputs.force_run == 'true' }} uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 0761b1e..69f1b90 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -4,6 +4,7 @@ on: push: branches: [main] pull_request: {} + workflow_dispatch: # Sometimes tests get stuck in PRs; This allows them to be rerun manually permissions: contents: read From 452fe05553a4c5f424c789c6a59afa4786091f1d Mon Sep 17 00:00:00 2001 From: "E. Lynette Rayle" Date: Wed, 21 May 2025 10:04:29 -0400 Subject: [PATCH 2/4] Update .github/workflows/fetch-licenses.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/fetch-licenses.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fetch-licenses.yaml b/.github/workflows/fetch-licenses.yaml index ff3443a..497e384 100644 --- a/.github/workflows/fetch-licenses.yaml +++ b/.github/workflows/fetch-licenses.yaml @@ -55,7 +55,7 @@ jobs: exit 0 fi fi - echo "src_changed"=$src_changed >> $GITHUB_ENV + echo "src_changed=$src_changed" >> $GITHUB_ENV - name: Run license extraction if: ${{ env.src_changed == 'true' || github.event.inputs.force_run == 'true' }} From 96e1d94deeb3093133665dca23812301a9d9a11a Mon Sep 17 00:00:00 2001 From: "E. Lynette Rayle" Date: Wed, 21 May 2025 10:04:40 -0400 Subject: [PATCH 3/4] Update .github/workflows/fetch-licenses.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/workflows/fetch-licenses.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/fetch-licenses.yaml b/.github/workflows/fetch-licenses.yaml index 497e384..a5f4e8d 100644 --- a/.github/workflows/fetch-licenses.yaml +++ b/.github/workflows/fetch-licenses.yaml @@ -82,7 +82,7 @@ jobs: exit 0 fi fi - echo "genfiles_changed"=$genfiles_changed >> $GITHUB_ENV + echo "genfiles_changed=$genfiles_changed" >> $GITHUB_ENV - name: Create Pull Request if: ${{ env.genfiles_changed == 'true' || github.event.inputs.force_run == 'true' }} From 5003b2ac0d260c2a887810ecf4942139e44bd4eb Mon Sep 17 00:00:00 2001 From: "E. Lynette Rayle" Date: Wed, 21 May 2025 10:08:55 -0400 Subject: [PATCH 4/4] make env var names distinct from local vars --- .github/workflows/fetch-licenses.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/fetch-licenses.yaml b/.github/workflows/fetch-licenses.yaml index a5f4e8d..b8490fc 100644 --- a/.github/workflows/fetch-licenses.yaml +++ b/.github/workflows/fetch-licenses.yaml @@ -55,10 +55,10 @@ jobs: exit 0 fi fi - echo "src_changed=$src_changed" >> $GITHUB_ENV + echo "SRC_CHANGED=$src_changed" >> $GITHUB_ENV - name: Run license extraction - if: ${{ env.src_changed == 'true' || github.event.inputs.force_run == 'true' }} + if: ${{ env.SRC_CHANGED == 'true' || github.event.inputs.force_run == 'true' }} run: | cd cmd echo "Current branch: $(git branch)" @@ -82,10 +82,10 @@ jobs: exit 0 fi fi - echo "genfiles_changed=$genfiles_changed" >> $GITHUB_ENV + echo "GENFILES_CHANGED=$genfiles_changed" >> $GITHUB_ENV - name: Create Pull Request - if: ${{ env.genfiles_changed == 'true' || github.event.inputs.force_run == 'true' }} + if: ${{ env.GENFILES_CHANGED == 'true' || github.event.inputs.force_run == 'true' }} uses: peter-evans/create-pull-request@271a8d0340265f705b14b6d32b9829c1cb33d45e with: token: ${{ secrets.GITHUB_TOKEN }}