@@ -14,6 +14,67 @@ permissions: {}
14
14
15
15
jobs :
16
16
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
+
17
78
commitlint :
18
79
runs-on : ubuntu-latest
19
80
31
92
validate-action :
32
93
name : Validate Action Build & Execution
33
94
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
+
34
99
env :
35
100
TEST_CONTAINER_TAG : psr-publish-action:latest
101
+
36
102
steps :
37
103
- name : Setup | Checkout Repository
38
104
uses : actions/checkout@v4
0 commit comments