Skip to content

Commit 6aa8ffa

Browse files
committed
Merge remote-tracking branch 'upstream/trunk' into trunk
2 parents 687c908 + 56a6768 commit 6aa8ffa

File tree

107 files changed

+3247
-7441
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

107 files changed

+3247
-7441
lines changed
Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
name: JavaScript Type Checking
2+
3+
on:
4+
# JavaScript type checking was introduced in 7.0.0.
5+
push:
6+
branches:
7+
- trunk
8+
- '[7-9].[0-9]'
9+
tags:
10+
- '[7-9].[0-9]'
11+
- '[7-9]+.[0-9].[0-9]+'
12+
pull_request:
13+
branches:
14+
- trunk
15+
- '[7-9].[0-9]'
16+
paths:
17+
# This workflow only scans JavaScript files.
18+
- '**.js'
19+
- '**.ts'
20+
- '**.tsx'
21+
# These files configure npm. Changes could affect the outcome.
22+
- 'package*.json'
23+
- '.nvmrc'
24+
# This file configures TypeScript. Changes could affect the outcome.
25+
- 'tsconfig.json'
26+
# This directory contains TypeScript definitions. Changes could affect the outcome.
27+
- 'typings/**'
28+
# Confirm any changes to relevant workflow files.
29+
- '.github/workflows/javascript-type-checking.yml'
30+
- '.github/workflows/reusable-javascript-type-checking-v1.yml'
31+
workflow_dispatch:
32+
33+
# Cancels all previous workflow runs for pull requests that have not completed.
34+
concurrency:
35+
# The concurrency group contains the workflow name and the branch name for pull requests
36+
# or the commit hash for any other events.
37+
group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
38+
cancel-in-progress: true
39+
40+
# Disable permissions for all available scopes by default.
41+
# Any needed permissions should be configured at the job level.
42+
permissions: {}
43+
44+
jobs:
45+
# Runs JavaScript type checking.
46+
typecheck:
47+
name: JavaScript type checking
48+
uses: ./.github/workflows/reusable-javascript-type-checking-v1.yml
49+
permissions:
50+
contents: read
51+
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
52+
53+
slack-notifications:
54+
name: Slack Notifications
55+
uses: ./.github/workflows/slack-notifications.yml
56+
permissions:
57+
actions: read
58+
contents: read
59+
needs: [ typecheck ]
60+
if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
61+
with:
62+
calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
63+
secrets:
64+
SLACK_GHA_SUCCESS_WEBHOOK: ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }}
65+
SLACK_GHA_CANCELLED_WEBHOOK: ${{ secrets.SLACK_GHA_CANCELLED_WEBHOOK }}
66+
SLACK_GHA_FIXED_WEBHOOK: ${{ secrets.SLACK_GHA_FIXED_WEBHOOK }}
67+
SLACK_GHA_FAILURE_WEBHOOK: ${{ secrets.SLACK_GHA_FAILURE_WEBHOOK }}
68+
69+
failed-workflow:
70+
name: Failed workflow tasks
71+
runs-on: ubuntu-24.04
72+
permissions:
73+
actions: write
74+
needs: [ slack-notifications ]
75+
if: |
76+
always() &&
77+
github.repository == 'WordPress/wordpress-develop' &&
78+
github.event_name != 'pull_request' &&
79+
github.run_attempt < 2 &&
80+
(
81+
contains( needs.*.result, 'cancelled' ) ||
82+
contains( needs.*.result, 'failure' )
83+
)
84+
85+
steps:
86+
- name: Dispatch workflow run
87+
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
88+
with:
89+
retries: 2
90+
retry-exempt-status-codes: 418
91+
script: |
92+
github.rest.actions.createWorkflowDispatch({
93+
owner: context.repo.owner,
94+
repo: context.repo.repo,
95+
workflow_id: 'failed-workflow.yml',
96+
ref: 'trunk',
97+
inputs: {
98+
run_id: `${context.runId}`,
99+
}
100+
});

.github/workflows/phpstan-static-analysis.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ on:
2424
- 'tests/phpstan/baseline.php'
2525
# Confirm any changes to relevant workflow files.
2626
- '.github/workflows/phpstan-static-analysis.yml'
27-
- '.github/workflows/reusable-phpstan-static-analysis.yml'
27+
- '.github/workflows/reusable-phpstan-static-analysis-v1.yml'
2828
workflow_dispatch:
2929

3030
# Cancels all previous workflow runs for pull requests that have not completed.
@@ -42,10 +42,10 @@ jobs:
4242
# Runs PHPStan Static Analysis.
4343
phpstan:
4444
name: PHP static analysis
45-
uses: ./.github/workflows/reusable-phpstan-static-analysis.yml
45+
uses: ./.github/workflows/reusable-phpstan-static-analysis-v1.yml
4646
permissions:
4747
contents: read
48-
if: ${{ github.repository == 'WordPress/wordpress-develop' || ( github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' ) }}
48+
if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
4949

5050
slack-notifications:
5151
name: Slack Notifications
@@ -81,7 +81,7 @@ jobs:
8181
8282
steps:
8383
- name: Dispatch workflow run
84-
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
84+
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
8585
with:
8686
retries: 2
8787
retry-exempt-status-codes: 418
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
##
2+
# A reusable workflow that runs JavaScript Type Checking.
3+
##
4+
name: JavaScript Type Checking
5+
6+
on:
7+
workflow_call:
8+
9+
# Disable permissions for all available scopes by default.
10+
# Any needed permissions should be configured at the job level.
11+
permissions: {}
12+
13+
jobs:
14+
# Runs JavaScript type checking.
15+
#
16+
# Violations are reported inline with annotations.
17+
#
18+
# Performs the following steps:
19+
# - Checks out the repository.
20+
# - Sets up Node.js.
21+
# - Logs debug information.
22+
# - Installs npm dependencies.
23+
# - Configures caching for TypeScript build info.
24+
# - Runs JavaScript type checking.
25+
# - Saves the TypeScript build info.
26+
# - Ensures version-controlled files are not modified or deleted.
27+
typecheck:
28+
name: Run JavaScript type checking
29+
runs-on: ubuntu-24.04
30+
permissions:
31+
contents: read
32+
timeout-minutes: 10
33+
34+
steps:
35+
- name: Checkout repository
36+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
37+
with:
38+
show-progress: ${{ runner.debug == '1' && 'true' || 'false' }}
39+
persist-credentials: false
40+
41+
- name: Set up Node.js
42+
uses: actions/setup-node@2028fbc5c25fe9cf00d9f06a71cc4710d4507903 # v6.0.0
43+
with:
44+
node-version-file: '.nvmrc'
45+
cache: npm
46+
47+
- name: Log debug information
48+
run: |
49+
npm --version
50+
node --version
51+
52+
- name: Install npm dependencies
53+
run: npm ci --ignore-scripts
54+
55+
- name: Cache TypeScript build info
56+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
57+
with:
58+
path: |
59+
*.tsbuildinfo
60+
key: "ts-build-info-${{ github.run_id }}"
61+
restore-keys: |
62+
ts-build-info-
63+
64+
- name: Run JavaScript type checking
65+
run: npm run typecheck:js
66+
67+
- name: "Save result cache"
68+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0
69+
if: ${{ !cancelled() }}
70+
with:
71+
path: |
72+
*.tsbuildinfo
73+
key: "ts-build-info-${{ github.run_id }}"
74+
75+
- name: Ensure version-controlled files are not modified or deleted
76+
run: git diff --exit-code

.github/workflows/reusable-phpstan-static-analysis.yml renamed to .github/workflows/reusable-phpstan-static-analysis-v1.yml

File renamed without changes.

.github/workflows/reusable-phpunit-tests-v3.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ jobs:
120120
phpunit-tests:
121121
name: ${{ ( inputs.phpunit-test-groups || inputs.coverage-report ) && format( 'PHP {0} with ', inputs.php ) || '' }} ${{ 'mariadb' == inputs.db-type && 'MariaDB' || 'MySQL' }} ${{ inputs.db-version }}${{ inputs.multisite && ' multisite' || '' }}${{ inputs.db-innovation && ' (innovation release)' || '' }}${{ inputs.memcached && ' with memcached' || '' }}${{ inputs.report && ' (test reporting enabled)' || '' }} ${{ 'example.org' != inputs.tests-domain && inputs.tests-domain || '' }}
122122
runs-on: ${{ inputs.os }}
123-
timeout-minutes: ${{ inputs.coverage-report && 120 || inputs.php == '8.4' && 30 || 20 }}
123+
timeout-minutes: ${{ inputs.coverage-report && 120 || 40 }}
124124
permissions:
125125
contents: read
126126

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ wp-tests-config.php
2424
/tests/phpunit/build
2525
/wp-cli.local.yml
2626
/phpstan.neon
27+
/*.tsbuildinfo
2728
/jsdoc
2829
/composer.lock
2930
/vendor

Gruntfile.js

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,12 +339,19 @@ module.exports = function(grunt) {
339339
},
340340
{
341341
expand: true,
342-
cwd: SOURCE_DIR + 'js/_enqueues/vendor/codemirror/',
342+
cwd: SOURCE_DIR + 'js/_enqueues/lib/codemirror/',
343343
src: [
344-
'fakejshint.js',
345344
'htmlhint-kses.js',
346345
],
347346
dest: WORKING_DIR + 'wp-includes/js/codemirror/'
347+
},
348+
{
349+
expand: true,
350+
cwd: SOURCE_DIR + 'js/_enqueues/deprecated/',
351+
src: [
352+
'fakejshint.js',
353+
],
354+
dest: WORKING_DIR + 'wp-includes/js/codemirror/'
348355
}
349356
]
350357
},
@@ -1549,6 +1556,7 @@ module.exports = function(grunt) {
15491556
grunt.registerTask( 'precommit:js', [
15501557
'webpack:prod',
15511558
'jshint:corejs',
1559+
'typecheck:js',
15521560
'uglify:imgareaselect',
15531561
'uglify:jqueryform',
15541562
'uglify:moment',
@@ -2002,6 +2010,18 @@ module.exports = function(grunt) {
20022010

20032011
grunt.registerTask( 'test', 'Runs all QUnit and PHPUnit tasks.', ['qunit:compiled', 'phpunit'] );
20042012

2013+
grunt.registerTask( 'typecheck:js', 'Runs TypeScript type checking.', function() {
2014+
var done = this.async();
2015+
2016+
grunt.util.spawn( {
2017+
cmd: 'npm',
2018+
args: [ 'run', 'typecheck:js' ],
2019+
opts: { stdio: 'inherit' }
2020+
}, function( error ) {
2021+
done( ! error );
2022+
} );
2023+
} );
2024+
20052025
grunt.registerTask( 'phpstan', 'Runs PHPStan on the entire codebase.', function() {
20062026
var done = this.async();
20072027

0 commit comments

Comments
 (0)