@@ -14,6 +14,67 @@ permissions: {}
1414
1515jobs :
1616
17+ eval-changes :
18+ name : Evaluate changes
19+ runs-on : ubuntu-latest
20+
21+ steps :
22+ - uses : actions/checkout@v4
23+ with :
24+ fetch-depth : 50 # Must at least retrieve a set of commits to compare changes
25+ # primarily because of any 'Rebase and Merge' PR action in GitHub
26+
27+ - name : Evaluate | Check specific file types for changes
28+ id : changed-files
29+ uses :
tj-actions/[email protected] 30+ if : github.event_name == 'push' || github.event_name == 'pull_request'
31+ with :
32+ base_sha : ${{ github.event.push.before || github.event.pull_request.base.sha }}
33+ # action.yml is not considered as src because we can't test it
34+ files_yaml : |
35+ ci:
36+ - .github/workflows/validate.yml
37+ - .github/workflows/ci.yml
38+ docs:
39+ - AUTHORS.rst
40+ - CONTRIBUTING.rst
41+ - LICENSE
42+ - README.md
43+ src:
44+ - src/**
45+ tests:
46+ - tests/**
47+
48+ - name : Evaluate | Detect if any of the combinations of file sets have changed
49+ id : all-changes
50+ if : ${{ steps.changed-files.outcome == 'success' }}
51+ run : |
52+ printf '%s\n' "any_changed=false" >> $GITHUB_OUTPUT
53+ if [ "${{ steps.changed-files.outputs.ci_any_changed }}" == "true" ] || \
54+ [ "${{ steps.changed-files.outputs.docs_any_changed }}" == "true" ] || \
55+ [ "${{ steps.changed-files.outputs.src_any_changed }}" == "true" ] || \
56+ [ "${{ steps.changed-files.outputs.tests_any_changed }}" == "true" ]; then
57+ printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT
58+ fi
59+
60+ - name : Evaluate | Handle manual trigger (lie that all files changed)
61+ id : manual-trigger
62+ if : github.event_name == 'workflow_dispatch'
63+ run : |
64+ printf '%s\n' "ci_any_changed=true" >> $GITHUB_OUTPUT
65+ printf '%s\n' "docs_any_changed=true" >> $GITHUB_OUTPUT
66+ printf '%s\n' "src_any_changed=true" >> $GITHUB_OUTPUT
67+ printf '%s\n' "tests_any_changed=true" >> $GITHUB_OUTPUT
68+ printf '%s\n' "any_changed=true" >> $GITHUB_OUTPUT
69+
70+ outputs :
71+ any-file-changes : ${{ steps.all-changes.outputs.any_changed || steps.manual-trigger.outputs.any_changed }}
72+ ci-changes : ${{ steps.changed-files.outputs.ci_any_changed || steps.manual-trigger.outputs.ci_any_changed }}
73+ doc-changes : ${{ steps.changed-files.outputs.docs_any_changed || steps.manual-trigger.outputs.docs_any_changed }}
74+ src-changes : ${{ steps.changed-files.outputs.src_any_changed || steps.manual-trigger.outputs.src_any_changed }}
75+ test-changes : ${{ steps.changed-files.outputs.tests_any_changed || steps.manual-trigger.outputs.tests_any_changed }}
76+
77+
1778 commitlint :
1879 runs-on : ubuntu-latest
1980
3192 validate-action :
3293 name : Validate Action Build & Execution
3394 runs-on : ubuntu-latest
95+ if : needs.eval-changes.outputs.src-changes == 'true' || needs.eval-changes.outputs.test-changes == 'true' || needs.eval-changes.outputs.ci-changes == 'true'
96+ needs :
97+ - eval-changes
98+
3499 env :
35100 TEST_CONTAINER_TAG : psr-publish-action:latest
101+
36102 steps :
37103 - name : Setup | Checkout Repository
38104 uses : actions/checkout@v4
0 commit comments