Make WordPress Core

Changeset 58628


Ignore:
Timestamp:
07/02/2024 07:59:42 PM (3 months ago)
Author:
desrosj
Message:

Build/Test Tools: Make use of new reusable workflows for 5.0.

This updates the 5.0 branch to utilize the new reusable workflows in trunk introduced in [58165].

This also includes backports for a some additional improvements and bug fixes that are necessary for the local development environment to continue working long term:

  • The image and platform properties for the mysql container have been updated to always prefer amd64 containers (#60822).
  • macos-13 is now pinned for MacOS jobs instead of macos-latest (#61340).
  • Migrating to Docker Compose V2 (#60901).
  • Removing the version property from docker-compose.yml (#59416).
  • Improvements to how artifacts and comments for Playground testing are generated.
  • Removing SVN related commands causing failures (#61216).
  • Updating the actions/github-scripts action to the latest version.
  • Cache the results of PHP_CodeSniffer runs (#49783).
  • Move the Memcached container into the Docker Compose config (#55700).
  • Improvements to the healthcheck command for the mysql container (#58867).
  • Skip some tests when not in the primary branch (#50401).

Merges [49264], [51673], [52179], [53552], [53895], [56464], [57918], [58157], [57124], [57125], [57249] to the 5.0 branch.

Props johnbillion, joemcgill, swissspidy, thelovekesh, narenin, mukesh27, JeffPaul, peterwilsoncc, zieladam, ockham, SergeyBiryukov, jorbin, Clorith, afragen, jrf.
See #49783, #58867, #61340, #60822, #61216, #60901, #61101, #59416, #59805, #61213.

Location:
branches/5.0
Files:
1 deleted
9 edited
1 moved

Legend:

Unmodified
Added
Removed
  • branches/5.0

  • branches/5.0/.github/workflows/coding-standards.yml

    r55525 r58628  
    4141  cancel-in-progress: true
    4242
     43# Disable permissions for all available scopes by default.
     44# Any needed permissions should be configured at the job level.
     45permissions: {}
     46
    4347jobs:
    4448  # Runs the JavaScript coding standards checks.
    45   #
    46   # JSHint violations are not currently reported inline with annotations.
    47   #
    48   # Performs the following steps:
    49   # - Checks out the repository.
    50   # - Logs debug information about the GitHub Action runner.
    51   # - Installs NodeJS.
    52   # - Logs updated debug information.
    53   # _ Installs npm dependencies.
    54   # - Run the WordPress JSHint checks.
    5549  jshint:
    5650    name: JavaScript coding standards
    57     runs-on: ubuntu-latest
    58     timeout-minutes: 20
     51    uses: WordPress/wordpress-develop/.github/workflows/reusable-coding-standards-javascript.yml@trunk
     52    permissions:
     53      contents: read
    5954    if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
    60     env:
    61       PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
    62 
    63     steps:
    64       - name: Checkout repository
    65         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    66 
    67       - name: Log debug information
    68         run: |
    69           npm --version
    70           node --version
    71           git --version
    72           svn --version
    73 
    74       - name: Set up Node.js
    75         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    76         with:
    77           node-version-file: '.nvmrc'
    78           cache: npm
    79 
    80       - name: Log debug information
    81         run: |
    82           npm --version
    83           node --version
    84 
    85       - name: Install Dependencies
    86         run: npm ci
    87 
    88       - name: Run JSHint
    89         run: npm run grunt jshint
    9055
    9156  slack-notifications:
    9257    name: Slack Notifications
    9358    uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
     59    permissions:
     60      actions: read
     61      contents: read
    9462    needs: [ jshint ]
    9563    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
     
    10573    name: Failed workflow tasks
    10674    runs-on: ubuntu-latest
     75    permissions:
     76      actions: write
    10777    needs: [ jshint, slack-notifications ]
    10878    if: |
     
    11787    steps:
    11888      - name: Dispatch workflow run
    119         uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
     89        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
    12090        with:
    12191          retries: 2
  • branches/5.0/.github/workflows/javascript-tests.yml

    r55525 r58628  
    3939  cancel-in-progress: true
    4040
     41# Disable permissions for all available scopes by default.
     42# Any needed permissions should be configured at the job level.
     43permissions: {}
     44
    4145jobs:
    42   # Runs the QUnit tests for WordPress.
    43   #
    44   # Performs the following steps:
    45   # - Checks out the repository.
    46   # - Logs debug information about the GitHub Action runner.
    47   # - Installs NodeJS.
    48   # - Logs updated debug information.
    49   # _ Installs npm dependencies.
    50   # - Run the WordPress QUnit tests.
     46  # Runs the WordPress Core JavaScript tests.
    5147  test-js:
    5248    name: QUnit Tests
    53     runs-on: ubuntu-latest
    54     timeout-minutes: 20
     49    uses: WordPress/wordpress-develop/.github/workflows/reusable-javascript-tests.yml@trunk
     50    permissions:
     51      contents: read
    5552    if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
    56 
    57     steps:
    58       - name: Checkout repository
    59         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    60 
    61       - name: Log debug information
    62         run: |
    63           npm --version
    64           node --version
    65           git --version
    66           svn --version
    67 
    68       - name: Set up Node.js
    69         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    70         with:
    71           node-version-file: '.nvmrc'
    72           cache: npm
    73 
    74       - name: Log debug information
    75         run: |
    76           npm --version
    77           node --version
    78 
    79       - name: Install Dependencies
    80         run: npm ci
    81 
    82       - name: Run QUnit tests
    83         run: npm run grunt qunit:compiled
    8453
    8554  slack-notifications:
    8655    name: Slack Notifications
    8756    uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
     57    permissions:
     58      actions: read
     59      contents: read
    8860    needs: [ test-js ]
    8961    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
    9062    with:
    91       calling_status: ${{ needs.test-js.result == 'success' && 'success' || needs.test-js.result == 'cancelled' && 'cancelled' || 'failure' }}
     63      calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
    9264    secrets:
    9365      SLACK_GHA_SUCCESS_WEBHOOK: ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }}
     
    9971    name: Failed workflow tasks
    10072    runs-on: ubuntu-latest
    101     needs: [ test-js, slack-notifications ]
     73    permissions:
     74      actions: write
     75    needs: [ slack-notifications ]
    10276    if: |
    10377      always() &&
     
    10680      github.run_attempt < 2 &&
    10781      (
    108         needs.test-js.result == 'cancelled' || needs.test-js.result == 'failure'
     82        contains( needs.*.result, 'cancelled' ) ||
     83        contains( needs.*.result, 'failure' )
    10984      )
    11085
    11186    steps:
    11287      - name: Dispatch workflow run
    113         uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
     88        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
    11489        with:
    11590          retries: 2
  • branches/5.0/.github/workflows/phpunit-tests.yml

    r55525 r58628  
    2222# Cancels all previous workflow runs for pull requests that have not completed.
    2323concurrency:
    24     # The concurrency group contains the workflow name and the branch name for pull requests
    25     # or the commit hash for any other events.
     24  # The concurrency group contains the workflow name and the branch name for pull requests
     25  # or the commit hash for any other events.
    2626  group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.sha }}
    2727  cancel-in-progress: true
    2828
    29 env:
    30   LOCAL_DIR: build
    31   PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
    32   COMPOSER_INSTALL: ${{ false }}
    33   # Controls which npm script to use for running PHPUnit tests. Options ar `php` and `php-composer`.
    34   PHPUNIT_SCRIPT: php
    35   LOCAL_PHP_MEMCACHED: ${{ false }}
    36   SLOW_TESTS: 'external-http,media,restapi'
     29# Disable permissions for all available scopes by default.
     30# Any needed permissions should be configured at the job level.
     31permissions: {}
    3732
    3833jobs:
    39   # Sets up WordPress for testing or development use.
    4034  #
    41   # Performs the following steps:
    42   # - Cancels all previous workflow runs for pull requests that have not completed.
    43   # - Checks out the repository.
    44   # - Logs debug information about the GitHub Action runner.
    45   # - Installs NodeJS.
    46   # _ Installs npm dependencies.
    47   # - Builds WordPress to run from the `build` directory.
    48   # - Creates a ZIP file of compiled WordPress.
    49   # - Uploads ZIP file as an artifact.
    50   setup-wordpress:
    51     name: Setup WordPress
    52     runs-on: ubuntu-latest
     35  # Creates a PHPUnit test job for each PHP combination.
     36  #
     37  test-php:
     38    name: PHP ${{ matrix.php }}
     39    uses: WordPress/wordpress-develop/.github/workflows/reusable-phpunit-tests-v1.yml@trunk
     40    permissions:
     41      contents: read
     42    secrets: inherit
    5343    if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
    54 
    55     steps:
    56       - name: Checkout repository
    57         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    58 
    59       - name: Log debug information
    60         run: |
    61           echo "$GITHUB_REF"
    62           echo "$GITHUB_EVENT_NAME"
    63           npm --version
    64           node --version
    65           curl --version
    66           git --version
    67           svn --version
    68           php --version
    69           php -i
    70           locale -a
    71 
    72       - name: Set up Node.js
    73         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    74         with:
    75           node-version-file: '.nvmrc'
    76           cache: npm
    77 
    78       - name: Install Dependencies
    79         run: npm ci
    80 
    81       - name: Build WordPress
    82         run: npm run build
    83 
    84       - name: Create ZIP artifact
    85         uses: thedoctor0/zip-release@a24011d8d445e4da5935a7e73c1f98e22a439464 # v0.7.1
    86         with:
    87           filename: built-wp-${{ github.sha }}.zip
    88           exclusions: '*.git* /*node_modules/* packagehash.txt'
    89 
    90       - name: Upload build artifact
    91         uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
    92         with:
    93           name: built-wp-${{ github.sha }}
    94           path: built-wp-${{ github.sha }}.zip
    95           if-no-files-found: error
    96 
    97   # Runs the PHPUnit tests for WordPress.
    98   #
    99   # Performs the following steps:
    100   # - Sets environment variables.
    101   # - Sets up the environment variables needed for testing with memcached (if desired).
    102   # - Downloads the built WordPress artifact from the previous job.
    103   # - Unzips the artifact.
    104   # - Installs NodeJS.
    105   # _ Installs npm dependencies.
    106   # - Configures caching for Composer.
    107   # _ Installs Composer dependencies (if desired).
    108   # - Logs Docker debug information (about the Docker installation within the runner).
    109   # - Starts the WordPress Docker container.
    110   # - Starts the Memcached server after the Docker network has been created (if desired).
    111   # - Logs general debug information about the runner.
    112   # - Logs the running Docker containers.
    113   # - Logs debug information from inside the WordPress Docker container.
    114   # - Logs debug information about what's installed within the WordPress Docker containers.
    115   # - Install WordPress within the Docker container.
    116   # - Run the PHPUnit tests.
    117   # - Checks out the WordPress Test reporter repository.
    118   # - Reconnect the directory to the Git repository.
    119   # - Submit the test results to the WordPress.org host test results.
    120   test-php:
    121     name: ${{ matrix.php }}${{ matrix.multisite && ' multisite' || '' }}${{ matrix.split_slow && ' slow tests' || '' }}${{ matrix.memcached && ' with memcached' || '' }} on ${{ matrix.os }}
    122     needs: setup-wordpress
    123     runs-on: ${{ matrix.os }}
    124     timeout-minutes: 20
    12544    strategy:
    12645      fail-fast: false
    12746      matrix:
     47        os: [ ubuntu-latest ]
    12848        php: [ '5.3', '5.4', '5.5' ]
    129         os: [ ubuntu-latest ]
    130         memcached: [ false ]
    13149        split_slow: [ false, true ]
    13250        multisite: [ false, true ]
     51        memcached: [ false ]
     52
    13353        include:
    13454          # Include jobs for PHP 7.3 with memcached.
     
    220140            multisite: true
    221141
    222     env:
    223       LOCAL_PHP: ${{ matrix.php }}-fpm
    224       LOCAL_PHPUNIT: ${{ matrix.phpunit && matrix.phpunit || matrix.php }}-fpm
    225       LOCAL_PHP_MEMCACHED: ${{ matrix.memcached }}
    226       PHPUNIT_CONFIG: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }}
    227 
    228     steps:
    229       - name: Configure environment variables
    230         run: |
    231           echo "PHP_FPM_UID=$(id -u)" >> $GITHUB_ENV
    232           echo "PHP_FPM_GID=$(id -g)" >> $GITHUB_ENV
    233 
    234       - name: Download the built WordPress artifact
    235         uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2
    236         with:
    237           name: built-wp-${{ github.sha }}
    238 
    239       - name: Unzip built artifact
    240         run: unzip built-wp-${{ github.sha }}.zip
    241 
    242       - name: Set up Node.js
    243         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    244         with:
    245           node-version-file: '.nvmrc'
    246           cache: npm
    247 
    248       - name: Install Dependencies
    249         run: npm ci
    250 
    251       - name: Cache Composer dependencies
    252         if: ${{ env.COMPOSER_INSTALL == true }}
    253         uses: actions/cache@69d9d449aced6a2ede0bc19182fadc3a0a42d2b0 # v3.2.6
    254         env:
    255           cache-name: cache-composer-dependencies
    256         with:
    257           path: ${{ steps.composer-cache.outputs.dir }}
    258           key: ${{ runner.os }}-php-${{ matrix.php }}-composer-${{ hashFiles('**/composer.lock') }}
    259 
    260       - name: Install Composer dependencies
    261         if: ${{ env.COMPOSER_INSTALL == true }}
    262         run: |
    263           docker-compose run --rm php composer --version
    264           docker-compose run --rm php composer install
    265 
    266       - name: Docker debug information
    267         run: |
    268           docker -v
    269           docker-compose -v
    270 
    271       - name: Start Docker environment
    272         run: |
    273           npm run env:start
    274 
    275       # The memcached server needs to start after the Docker network has been set up with `npm run env:start`.
    276       - name: Start the Memcached server.
    277         if: ${{ matrix.memcached }}
    278         run: |
    279           cp tests/phpunit/includes/object-cache.php build/wp-content/object-cache.php
    280           docker run --name memcached --net $(basename "$PWD")_wpdevnet -d memcached
    281 
    282       - name: General debug information
    283         run: |
    284           npm --version
    285           node --version
    286           curl --version
    287           git --version
    288           svn --version
    289 
    290       - name: Log running Docker containers
    291         run: docker ps -a
    292 
    293       - name: WordPress Docker container debug information
    294         run: |
    295           docker-compose run --rm mysql mysql --version
    296           docker-compose run --rm php php --version
    297           docker-compose run --rm php php -m
    298           docker-compose run --rm php php -i
    299           docker-compose run --rm php locale -a
    300 
    301       - name: Install WordPress
    302         run: npm run env:install
    303 
    304       - name: Run slow PHPUnit tests
    305         if: ${{ matrix.split_slow }}
    306         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ${{ env.SLOW_TESTS }}
    307 
    308       - name: Run PHPUnit tests for single site excluding slow tests
    309         if: ${{ matrix.php < '7.0' && ! matrix.split_slow && ! matrix.multisite }}
    310         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-required
    311 
    312       - name: Run PHPUnit tests for Multisite excluding slow tests
    313         if: ${{ matrix.php < '7.0' && ! matrix.split_slow && matrix.multisite }}
    314         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --exclude-group ${{ env.SLOW_TESTS }},ajax,ms-files,ms-excluded,oembed-headers
    315 
    316       - name: Run PHPUnit tests
    317         if: ${{ matrix.php >= '7.0' }}
    318         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }}
    319 
    320       - name: Run AJAX tests
    321         if: ${{ ! matrix.multisite && ! matrix.split_slow }}
    322         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c ${{ env.PHPUNIT_CONFIG }} --group ajax
    323 
    324       - name: Run ms-files tests as a multisite install
    325         if: ${{ matrix.multisite && ! matrix.split_slow }}
    326         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c tests/phpunit/multisite.xml --group ms-files
    327 
    328       - name: Run external HTTP tests
    329         if: ${{ ! matrix.multisite && ! matrix.split_slow }}
    330         run: npm run test:${{ env.PHPUNIT_SCRIPT }} -- --verbose -c phpunit.xml.dist --group external-http
    331 
    332       - name: Checkout the WordPress Test Reporter
    333         if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/trunk' && matrix.report }}
    334         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    335         with:
    336           repository: 'WordPress/phpunit-test-runner'
    337           path: 'test-runner'
    338 
    339       - name: Set up the Git repository
    340         if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/trunk' && matrix.report }}
    341         run: |
    342           git init
    343           git remote add origin https://github.com/WordPress/wordpress-develop.git
    344           git fetch
    345           git reset origin/trunk
    346 
    347       - name: Submit test results to the WordPress.org host test results
    348         if: ${{ github.repository == 'WordPress/wordpress-develop' && github.ref == 'refs/heads/trunk' && matrix.report }}
    349         env:
    350           WPT_REPORT_API_KEY: "${{ secrets.WPT_REPORT_API_KEY }}"
    351         run: docker-compose run --rm -e WPT_REPORT_API_KEY -e WPT_PREPARE_DIR=/var/www -e WPT_TEST_DIR=/var/www php php test-runner/report.php
     142    with:
     143      os: ${{ matrix.os }}
     144      php: ${{ matrix.php }}
     145      phpunit: ${{ matrix.phpunit && matrix.phpunit || matrix.php }}
     146      multisite: ${{ matrix.multisite }}
     147      split_slow: ${{ matrix.split_slow }}
     148      memcached: ${{ matrix.memcached }}
     149      phpunit-config: ${{ matrix.multisite && 'tests/phpunit/multisite.xml' || 'phpunit.xml.dist' }}
    352150
    353151  slack-notifications:
    354152    name: Slack Notifications
    355153    uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
    356     needs: [ setup-wordpress, test-php ]
     154    permissions:
     155      actions: read
     156      contents: read
     157    needs: [ test-php ]
    357158    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
    358159    with:
     
    367168    name: Failed workflow tasks
    368169    runs-on: ubuntu-latest
     170    permissions:
     171      actions: write
    369172    needs: [ test-php, slack-notifications ]
    370173    if: |
     
    379182    steps:
    380183      - name: Dispatch workflow run
    381         uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
     184        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
    382185        with:
    383186          retries: 2
  • branches/5.0/.github/workflows/test-build-processes.yml

    r58627 r58628  
    1 name: Test npm
     1name: Test Build Processes
    22
    33on:
     
    3434  cancel-in-progress: true
    3535
    36 env:
    37   PUPPETEER_SKIP_CHROMIUM_DOWNLOAD: ${{ true }}
     36# Disable permissions for all available scopes by default.
     37# Any needed permissions should be configured at the job level.
     38permissions: {}
    3839
    3940jobs:
    40   # Verifies that installing npm dependencies and building WordPress works as expected.
    41   #
    42   # Performs the following steps:
    43   # - Checks out the repository.
    44   # - Logs debug information about the GitHub Action runner.
    45   # - Installs NodeJS.
    46   # _ Installs npm dependencies.
    47   # - Builds WordPress to run from the `build` directory.
    48   # - Cleans up after building WordPress to the `build` directory.
    49   # - Builds WordPress to run from the `src` directory.
    50   # - Cleans up after building WordPress to the `src` directory.
    51   test-npm:
    52     name: Test npm on ${{ matrix.os }}
    53     runs-on: ${{ matrix.os }}
    54     timeout-minutes: 20
     41  # Tests the WordPress Core build process on multiple operating systems.
     42  test-core-build-process:
     43    name: Core running from ${{ matrix.directory }}
     44    uses: WordPress/wordpress-develop/.github/workflows/reusable-test-core-build-process.yml@trunk
     45    permissions:
     46      contents: read
    5547    if: ${{ github.repository == 'WordPress/wordpress-develop' || github.event_name == 'pull_request' }}
    5648    strategy:
     
    5850      matrix:
    5951        os: [ ubuntu-latest, windows-latest ]
     52        directory: [ 'build' ]
     53        include:
     54          # Only prepare artifacts once.
     55          - os: ubuntu-latest
     56            directory: 'build'
     57            prepare-playground: true
     58    with:
     59      os: ${{ matrix.os }}
     60      directory: ${{ matrix.directory }}
     61      prepare-playground: ${{ matrix.prepare-playground && matrix.prepare-playground || false }}
     62      test-emoji: false
    6063
    61     steps:
    62       - name: Checkout repository
    63         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    64 
    65       - name: Log debug information
    66         run: |
    67           npm --version
    68           node --version
    69           curl --version
    70           git --version
    71           svn --version
    72 
    73       - name: Set up Node.js
    74         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    75         with:
    76           node-version-file: '.nvmrc'
    77           cache: npm
    78 
    79       - name: Install Dependencies
    80         run: npm ci
    81 
    82       - name: Build WordPress
    83         run: npm run build
    84 
    85       - name: Clean after building
    86         run: npm run grunt clean
    87 
    88       - name: Build WordPress in /src
    89         run: npm run build:dev
    90 
    91       - name: Clean after building in /src
    92         run: npm run grunt clean -- --dev
    93 
    94   # Verifies that installing npm dependencies and building WordPress works as expected on MacOS.
     64  # Tests the WordPress Core build process on MacOS.
    9565  #
    96   # This is separate from the job above in order to use stricter conditions about when to run.
     66  # This is separate from the job above in order to use stricter conditions when determining when to run.
    9767  # This avoids unintentionally consuming excessive minutes, as MacOS jobs consume minutes at a 10x rate.
    9868  #
     
    10070  # currently no way to determine the OS being used on a given job.
    10171  # See https://docs.github.com/en/actions/learn-github-actions/contexts#context-availability.
    102   #
    103   # Performs the following steps:
    104   # - Checks out the repository.
    105   # - Logs debug information about the GitHub Action runner.
    106   # - Installs NodeJS.
    107   # _ Installs npm dependencies.
    108   # - Builds WordPress to run from the `build` directory.
    109   # - Cleans up after building WordPress to the `build` directory.
    110   # - Builds WordPress to run from the `src` directory.
    111   # - Cleans up after building WordPress to the `src` directory.
    112   test-npm-macos:
    113     name: Test npm on MacOS
    114     runs-on: macos-latest
    115     timeout-minutes: 30
     72  test-core-build-process-macos:
     73    name: Core running from ${{ matrix.directory }}
     74    uses: WordPress/wordpress-develop/.github/workflows/reusable-test-core-build-process.yml@trunk
     75    permissions:
     76      contents: read
    11677    if: ${{ github.repository == 'WordPress/wordpress-develop' }}
    117     steps:
    118       - name: Checkout repository
    119         uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3.3.0
    120 
    121       - name: Log debug information
    122         run: |
    123           npm --version
    124           node --version
    125           curl --version
    126           git --version
    127           svn --version
    128 
    129       - name: Set up Node.js
    130         uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3.6.0
    131         with:
    132           node-version-file: '.nvmrc'
    133           cache: npm
    134 
    135       - name: Install Dependencies
    136         run: npm ci
    137 
    138       - name: Build WordPress
    139         run: npm run build
    140 
    141       - name: Clean after building
    142         run: npm run grunt clean
    143 
    144       - name: Build WordPress in /src
    145         run: npm run build:dev
    146 
    147       - name: Clean after building in /src
    148         run: npm run grunt clean -- --dev
     78    strategy:
     79      fail-fast: false
     80      matrix:
     81        os: [ macos-13 ]
     82        directory: [ 'build' ]
     83    with:
     84      os: ${{ matrix.os }}
     85      directory: ${{ matrix.directory }}
     86      test-emoji: false
    14987
    15088  slack-notifications:
    15189    name: Slack Notifications
    15290    uses: WordPress/wordpress-develop/.github/workflows/slack-notifications.yml@trunk
    153     needs: [ test-npm, test-npm-macos ]
     91    permissions:
     92      actions: read
     93      contents: read
     94    needs: [ test-core-build-process, test-core-build-process-macos ]
    15495    if: ${{ github.repository == 'WordPress/wordpress-develop' && github.event_name != 'pull_request' && always() }}
    15596    with:
    156       calling_status: ${{ needs.test-npm.result == 'success' && needs.test-npm-macos.result == 'success' && 'success' || ( needs.test-npm.result == 'cancelled' || needs.test-npm-macos.result == 'cancelled' ) && 'cancelled' || 'failure' }}
     97      calling_status: ${{ contains( needs.*.result, 'cancelled' ) && 'cancelled' || contains( needs.*.result, 'failure' ) && 'failure' || 'success' }}
    15798    secrets:
    15899      SLACK_GHA_SUCCESS_WEBHOOK: ${{ secrets.SLACK_GHA_SUCCESS_WEBHOOK }}
     
    164105    name: Failed workflow tasks
    165106    runs-on: ubuntu-latest
    166     needs: [ test-npm, test-npm-macos, slack-notifications ]
     107    permissions:
     108      actions: write
     109    needs: [ slack-notifications ]
    167110    if: |
    168111      always() &&
     
    171114      github.run_attempt < 2 &&
    172115      (
    173         needs.test-npm.result == 'cancelled' || needs.test-npm.result == 'failure' ||
    174         needs.test-npm-macos.result == 'cancelled' || needs.test-npm-macos.result == 'failure'
     116        contains( needs.*.result, 'cancelled' ) ||
     117        contains( needs.*.result, 'failure' )
    175118      )
    176119
    177120    steps:
    178121      - name: Dispatch workflow run
    179         uses: actions/github-script@98814c53be79b1d30f795b907e553d8679345975 # v6.4.0
     122        uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
    180123        with:
    181124          retries: 2
  • branches/5.0/docker-compose.yml

    r55525 r58628  
    1 version: '3.7'
    2 
    31services:
    42
     
    2624
    2725    depends_on:
    28       - php
     26      php:
     27        condition: service_started
     28      mysql:
     29        condition: service_healthy
    2930
    3031  ##
     
    3839
    3940    environment:
    40       LOCAL_PHP_XDEBUG: ${LOCAL_PHP_XDEBUG-false}
    41       LOCAL_PHP_MEMCACHED: ${LOCAL_PHP_MEMCACHED-false}
    42       PHP_FPM_UID: ${PHP_FPM_UID-1000}
    43       PHP_FPM_GID: ${PHP_FPM_GID-1000}
     41      - LOCAL_PHP_XDEBUG+${LOCAL_PHP_XDEBUG-false}
     42      - LOCAL_PHP_MEMCACHED=${LOCAL_PHP_MEMCACHED-false}
     43      - PHP_FPM_UID=${PHP_FPM_UID-1000}
     44      - PHP_FPM_GID=${PHP_FPM_GID-1000}
    4445
    4546    volumes:
     
    4748      - ./:/var/www
    4849
    49     depends_on:
    50       - mysql
     50    # The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
     51    init: true
    5152
    5253  ##
     
    5455  ##
    5556  mysql:
    56     image: amd64/${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-5.7}
     57    image: ${LOCAL_DB_TYPE-mysql}:${LOCAL_DB_VERSION-5.7}
     58    platform: linux/amd64
    5759
    5860    networks:
     
    7274    command: --default-authentication-plugin=mysql_native_password
    7375
     76    healthcheck:
     77      test: [ "CMD-SHELL", "if [ \"$LOCAL_DB_TYPE\" = \"mariadb\" ]; then mariadb-admin ping -h localhost; else mysqladmin ping -h localhost; fi" ]
     78      timeout: 5s
     79      interval: 5s
     80      retries: 10
     81
    7482  ##
    7583  # The WP CLI container.
     
    8290
    8391    environment:
    84       LOCAL_PHP_XDEBUG: ${LOCAL_PHP_XDEBUG-false}
    85       LOCAL_PHP_MEMCACHED: ${LOCAL_PHP_MEMCACHED-false}
    86       PHP_FPM_UID: ${PHP_FPM_UID-1000}
    87       PHP_FPM_GID: ${PHP_FPM_GID-1000}
     92      - LOCAL_PHP_XDEBUG=${LOCAL_PHP_XDEBUG-false}
     93      - LOCAL_PHP_MEMCACHED=${LOCAL_PHP_MEMCACHED-false}
     94      - PHP_FPM_UID=${PHP_FPM_UID-1000}
     95      - PHP_FPM_GID=${PHP_FPM_GID-1000}
    8896
    8997    volumes:
     
    92100    # The init directive ensures the command runs with a PID > 1, so Ctrl+C works correctly.
    93101    init: true
     102
     103    depends_on:
     104      php:
     105        condition: service_started
     106      mysql:
     107        condition: service_healthy
    94108
    95109  ##
     
    103117
    104118    environment:
    105       LOCAL_PHP_XDEBUG: ${LOCAL_PHP_XDEBUG-false}
    106       LOCAL_PHP_MEMCACHED: ${LOCAL_PHP_MEMCACHED-false}
    107       LOCAL_DIR: ${LOCAL_DIR-src}
    108       WP_MULTISITE: ${WP_MULTISITE-false}
    109       PHP_FPM_UID: ${PHP_FPM_UID-1000}
    110       PHP_FPM_GID: ${PHP_FPM_GID-1000}
    111       TRAVIS_BRANCH: ${TRAVIS_BRANCH-false}
    112       TRAVIS_PULL_REQUEST: ${TRAVIS_PULL_REQUEST-false}
    113       GITHUB_REF: ${GITHUB_REF-false}
    114       GITHUB_EVENT_NAME: ${GITHUB_EVENT_NAME-false}
     119      - LOCAL_PHP_XDEBUG=${LOCAL_PHP_XDEBUG-false}
     120      - LOCAL_PHP_MEMCACHED=${LOCAL_PHP_MEMCACHED-false}
     121      - LOCAL_DIR=${LOCAL_DIR-src}
     122      - WP_MULTISITE=${WP_MULTISITE-false}
     123      - PHP_FPM_UID=${PHP_FPM_UID-1000}
     124      - PHP_FPM_GID=${PHP_FPM_GID-1000}
     125      - TRAVIS_BRANCH=${TRAVIS_BRANCH-false}
     126      - TRAVIS_PULL_REQUEST=${TRAVIS_PULL_REQUEST-false}
     127      - GITHUB_REF=${GITHUB_REF-false}
     128      - GITHUB_EVENT_NAME=${GITHUB_EVENT_NAME-false}
    115129
    116130    volumes:
  • branches/5.0/src/wp-includes/js/media-audiovideo.js

    r43688 r58628  
    827827            wp.ajax.send( 'set-attachment-thumbnail', {
    828828                data : {
     829                    _ajax_nonce: wp.media.view.settings.nonce.setAttachmentThumbnail,
    829830                    urls: urls,
    830831                    thumbnail_id: attachment.get( 'id' )
  • branches/5.0/tools/local-env/scripts/docker.js

    r49529 r58628  
    55dotenvExpand( dotenv.config() );
    66
    7 // Execute any docker-compose command passed to this script.
    8 execSync( 'docker-compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
     7// Execute any docker compose command passed to this script.
     8execSync( 'docker compose ' + process.argv.slice( 2 ).join( ' ' ), { stdio: 'inherit' } );
  • branches/5.0/tools/local-env/scripts/install.js

    r50307 r58628  
    4646 */
    4747function wp_cli( cmd ) {
    48     execSync( `docker-compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
     48    execSync( `docker compose run --rm cli ${cmd}`, { stdio: 'inherit' } );
    4949}
    5050
     
    5555    const test_plugin_directory = 'tests/phpunit/data/plugins/wordpress-importer';
    5656
    57     execSync( `docker-compose exec -T php rm -rf ${test_plugin_directory} && svn checkout -r ${process.env.WP_IMPORTER_REVISION} https://plugins.svn.wordpress.org/wordpress-importer/trunk/ ${test_plugin_directory}`, { stdio: 'inherit' } );
     57    execSync( `docker compose exec -T php rm -rf ${test_plugin_directory} && svn checkout -r ${process.env.WP_IMPORTER_REVISION} https://plugins.svn.wordpress.org/wordpress-importer/trunk/ ${test_plugin_directory}`, { stdio: 'inherit' } );
    5858}
  • branches/5.0/tools/local-env/scripts/start.js

    r49529 r58628  
    66
    77// Start the local-env containers.
    8 execSync( 'docker-compose up -d wordpress-develop', { stdio: 'inherit' } );
     8execSync( 'docker compose up -d wordpress-develop', { stdio: 'inherit' } );
    99
    1010// If Docker Toolbox is being used, we need to manually forward LOCAL_PORT to the Docker VM.
Note: See TracChangeset for help on using the changeset viewer.