2929 - ' .jshintrc'
3030 # This file configures PHPCS. Changes could affect the outcome.
3131 - ' phpcs.xml.dist'
32- # Changes to workflow files should always verify all workflows are successful.
33- - ' .github/workflows/*.yml'
32+ # Confirm any changes to relevant workflow files.
33+ - ' .github/workflows/coding-standards.yml'
34+ - ' .github/workflows/reusable-coding-standards-*.yml'
3435 workflow_dispatch :
3536
3637# Cancels all previous workflow runs for pull requests that have not completed.
@@ -45,129 +46,21 @@ concurrency:
4546permissions : {}
4647
4748jobs :
48- # Runs PHP coding standards checks.
49- #
50- # Violations are reported inline with annotations.
51- #
52- # Performs the following steps:
53- # - Checks out the repository.
54- # - Sets up PHP.
55- # - Configures caching for PHPCS scans.
56- # - Installs Composer dependencies.
57- # - Make Composer packages available globally.
58- # - Runs PHPCS on the full codebase with warnings suppressed.
59- # - Generate a report for displaying issues as pull request annotations.
60- # - Runs PHPCS on the `tests` directory without warnings suppressed.
61- # - Generate a report for displaying `test` directory issues as pull request annotations.
62- # - Ensures version-controlled files are not modified or deleted.
49+ # Runs the PHP coding standards checks.
6350 phpcs :
6451 name : PHP coding standards
65- runs-on : ubuntu-latest
52+ uses : WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-php.yml@trunk
6653 permissions :
6754 contents : read
68- timeout-minutes : 20
6955 if : ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
7056
71- steps :
72- - name : Checkout repository
73- uses : actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
74-
75- - name : Set up PHP
76- uses : shivammathur/setup-php@d30ad8b1843ace22e6698ab99bbafaa747b6bd0d # v2.24.0
77- with :
78- php-version : ' 7.4'
79- coverage : none
80- tools : cs2pr
81-
82- # This date is used to ensure that the PHPCS cache is cleared at least once every week.
83- # http://man7.org/linux/man-pages/man1/date.1.html
84- - name : " Get last Monday's date"
85- id : get-date
86- run : echo "date=$(/bin/date -u --date='last Mon' "+%F")" >> $GITHUB_OUTPUT
87-
88- - name : Cache PHPCS scan cache
89- uses : actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0 # v3.2.6
90- with :
91- path : |
92- .cache/phpcs-src.json
93- .cache/phpcs-tests.json
94- key : ${{ runner.os }}-date-${{ steps.get-date.outputs.date }}-phpcs-cache-${{ hashFiles('**/composer.json', 'phpcs.xml.dist') }}
95-
96- # Since Composer dependencies are installed using `composer update` and no lock file is in version control,
97- # passing a custom cache suffix ensures that the cache is flushed at least once per week.
98- - name : Install Composer dependencies
99- uses : ramsey/composer-install@83af392bf5f031813d25e6fe4cd626cdba9a2df6 # v2.2.0
100- with :
101- custom-cache-suffix : ${{ steps.get-date.outputs.date }}
102-
103- - name : Make Composer packages available globally
104- run : echo "${PWD}/vendor/bin" >> $GITHUB_PATH
105-
106- - name : Run PHPCS on all Core files
107- id : phpcs-core
108- run : phpcs -n --report-full --cache=./.cache/phpcs-src.json --report-checkstyle=./.cache/phpcs-report.xml
109-
110- - name : Show PHPCS results in PR
111- if : ${{ always() && steps.phpcs-core.outcome == 'failure' }}
112- run : cs2pr ./.cache/phpcs-report.xml
113-
114- - name : Check test suite files for warnings
115- id : phpcs-tests
116- run : phpcs tests --report-full --cache=./.cache/phpcs-tests.json --report-checkstyle=./.cache/phpcs-tests-report.xml
117-
118- - name : Show test suite scan results in PR
119- if : ${{ always() && steps.phpcs-tests.outcome == 'failure' }}
120- run : cs2pr ./.cache/phpcs-tests-report.xml
121-
122- - name : Ensure version-controlled files are not modified during the tests
123- run : git diff --exit-code
124-
12557 # Runs the JavaScript coding standards checks.
126- #
127- # JSHint violations are not currently reported inline with annotations.
128- #
129- # Performs the following steps:
130- # - Checks out the repository.
131- # - Sets up Node.js.
132- # - Logs debug information about the GitHub Action runner.
133- # - Installs npm dependencies.
134- # - Run the WordPress JSHint checks.
135- # - Ensures version-controlled files are not modified or deleted.
13658 jshint :
13759 name : JavaScript coding standards
138- runs-on : ubuntu-latest
60+ uses : WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-javascript.yml@trunk
13961 permissions :
14062 contents : read
141- timeout-minutes : 20
14263 if : ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
143- env :
144- PUPPETEER_SKIP_CHROMIUM_DOWNLOAD : ${{ true }}
145-
146- steps :
147- - name : Checkout repository
148- uses : actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
149-
150- - name : Set up Node.js
151- uses : actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
152- with :
153- node-version-file : ' .nvmrc'
154- cache : npm
155-
156- - name : Log debug information
157- run : |
158- npm --version
159- node --version
160- git --version
161- svn --version
162-
163- - name : Install npm Dependencies
164- run : npm ci
165-
166- - name : Run JSHint
167- run : npm run grunt jshint
168-
169- - name : Ensure version-controlled files are not modified or deleted
170- run : git diff --exit-code
17164
17265 slack-notifications :
17366 name : Slack Notifications
17871 needs : [ phpcs, jshint ]
17972 if : ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
18073 with :
181- calling_status : ${{ needs.phpcs.result == 'success' && needs.jshint .result == 'success' && 'success ' || ( needs.phpcs .result == 'cancelled' || needs.jshint.result == 'cancelled' ) && 'cancelled ' || 'failure ' }}
74+ calling_status : ${{ contains( needs.* .result, 'cancelled' ) && 'cancelled ' || contains ( needs.* .result, 'failure' ) && 'failure ' || 'success ' }}
18275 secrets :
18376 SLACK_GHA_SUCCESS_WEBHOOK : ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }}
18477 SLACK_GHA_CANCELLED_WEBHOOK : ${{ secrets.SLACK_GHA_CANCELLED_WEBHOOK }}
@@ -197,13 +90,13 @@ jobs:
19790 github.event_name != 'pull_request' &&
19891 github.run_attempt < 2 &&
19992 (
200- needs.phpcs .result == 'cancelled' || needs.phpcs.result == 'failure' ||
201- needs.jshint.result == 'cancelled' || needs.jshint .result == 'failure'
93+ contains( needs.* .result, 'cancelled' ) ||
94+ contains( needs.* .result, 'failure' )
20295 )
20396
20497 steps :
20598 - name : Dispatch workflow run
206- uses : actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
99+ uses : actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
207100 with :
208101 retries : 2
209102 retry-exempt-status-codes : 418
0 commit comments