Go to file
Jonathan Desrosiers 33af39335e Build/Test Tools: Prevent the NPM/Composer caches in GitHub Actions from snowballing.
The `actions/cache` GitHub action uses a `key` input to find the desired cache in storage. Currently, this is defined as a combination of the operating system being used, the software being cached (NPM or Composer), PHP version (Composer only), and a hash of the relevant lock file.

The `cache` action also supports a `restore-keys` input, which is an ordered list of keys to use for restoring a cache if no cache hit occurred for the specified key.

However, this means that every time a lock file is updated, the cache is being recreated by first restoring a previous one (when available), and then installing new versions of dependencies on top of that. This results in old, unused versions of dependencies never being removed from the cache.

In this change, the `restore-keys` are removed. This will force a new, fresh cache to be generated when the desired `key` is not matched. In testing, this results in a ~40% reduction in cache size when compared to the latest successful workflow runs. Since there is no way to manually flush the cache in GHA, the benefits of this change will not be seen until the `package-lock.json` and `composer.lock` files are updated, or the cache at the desired key is evicted.

Props johbillion.
See #52660.

git-svn-id: https://develop.svn.wordpress.org/trunk@50436 602fd350-edb4-49c9-b593-d223f7449a82
2021-02-25 20:47:28 +00:00
.github Build/Test Tools: Prevent the NPM/Composer caches in GitHub Actions from snowballing. 2021-02-25 20:47:28 +00:00
src Docs: Correct function name in add_settings_field() DocBlock. 2021-02-25 12:01:00 +00:00
tests Tests: Reset current screen after setting it to dashboard in add_submenu_page() tests. 2021-02-25 11:10:46 +00:00
tools Build/Test Tools: Install WordPress Importer plugin when installing the Docker-based local environment. 2021-02-10 16:52:13 +00:00
.editorconfig General: Instruct file editors not to trim trailing whitespace in markdown files. 2018-03-20 22:14:53 +00:00
.env Build/Test Tools: Install WordPress Importer plugin when installing the Docker-based local environment. 2021-02-10 16:52:13 +00:00
.eslintignore Build/Test Tools: Enable JSDocs to be linted with ESLint. 2020-07-27 23:33:51 +00:00
.eslintrc-jsdoc.js Build/Test Tools: Enable JSDocs to be linted with ESLint. 2020-07-27 23:33:51 +00:00
.gitignore Bundled Themes: Synchronise .gitignore with themes' svn ignore property. 2021-02-15 23:17:36 +00:00
.jshintrc Build tools: Fix the travis:js build. 2018-12-24 13:53:11 +00:00
.npmrc Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
.nvmrc Once upon a midnight dreary, while I coded, weak and weary, 2018-05-23 10:04:22 +00:00
composer.json Build/Test Tools: Only enforce PHP extension requirements when running core tests. 2020-11-12 17:23:44 +00:00
composer.lock Build/Test Tools: Only enforce PHP extension requirements when running core tests. 2020-11-12 17:23:44 +00:00
CONTRIBUTING.md Build/Test Tools: Add a missing word to the CONTRIBUTING.md file. 2021-02-23 19:59:20 +00:00
docker-compose.yml Build/Test Tools: Support the use of MariaDB in the local Docker environment. 2020-12-18 15:27:33 +00:00
Gruntfile.js Build/Test Tools: Replace node-sass with Dart Sass 2021-02-01 20:22:13 +00:00
jsdoc.conf.json Build Tools: Fix JSDoc configuration include paths. 2018-06-14 12:45:06 +00:00
package-lock.json trunk is now 5.8 alpha. 2021-02-23 21:04:02 +00:00
package.json trunk is now 5.8 alpha. 2021-02-23 21:04:02 +00:00
phpcompat.xml.dist General: Continuing to work towards a passing PHP Compatibility scan. 2020-06-03 17:38:56 +00:00
phpcs.xml.dist Tests: Backport two changes from PHPUnit 9.3: 2020-09-23 13:52:02 +00:00
phpunit.xml.dist Build/Test Tools: Update code coverage setup in the phpunit.xml.dist file to point to the build directory. 2020-08-23 17:22:28 +00:00
README.md Docs: Clarify the instructions on starting the local environment for the first time. 2021-01-12 11:32:48 +00:00
SECURITY.md Security: Update the Security Policy to include WordPress 5.7. 2021-02-23 21:36:58 +00:00
webpack.config.js Build tools: Allow building WordPress to src. 2018-12-24 13:28:22 +00:00
wp-cli.yml Build/Tests: Default to running unit tests from src. 2019-01-09 10:09:02 +00:00
wp-config-sample.php Code Modernization: Replace dirname( __FILE__ ) calls with __DIR__ magic constant. 2020-02-06 06:31:22 +00:00
wp-tests-config-sample.php Tests: Revert the dirname( __FILE__ ) replacement in wp-tests-config-sample.php for now, to avoid breaking unit tests created with WP-CLI scaffold command. 2020-02-06 21:49:13 +00:00

WordPress

Build Status

Welcome to the WordPress development repository! Please check out the contributor handbook for information about how to open bug reports, contribute patches, test changes, write documentation, or get involved in any way you can.

Getting Started

WordPress is a PHP, MySQL, and JavaScript based project, and uses Node for its JavaScript dependencies. A local development environment is available to quickly get up and running.

You will need a basic understanding of how to use the command line on your computer. This will allow you to set up the local development environment, to start it and stop it when necessary, and to run the tests.

You will need Node and npm installed on your computer. Node is a JavaScript runtime used for developer tooling, and npm is the package manager included with Node. If you have a package manager installed for your operating system, setup can be as straightforward as:

  • macOS: brew install node
  • Windows: choco install nodejs
  • Ubuntu: apt install nodejs npm

If you are not using a package manager, see the Node.js download page for installers and binaries.

You will also need Docker installed and running on your computer. Docker is the virtualization software that powers the local development environment. Docker can be installed just like any other regular application.

Development Environment Commands

Ensure Docker is running before using these commands.

To start the development environment for the first time

Clone the current repository using git clone https://github.com/WordPress/wordpress-develop.git. Then in your terminal move to the repository folder cd wordpress-develop and run the following commands:

npm install
npm run build:dev
npm run env:start
npm run env:install

Your WordPress site will accessible at http://localhost:8889. You can see or change configurations in the .env file located at the root of the project directory.

To watch for changes

If you're making changes to WordPress core files, you should start the file watcher in order to build or copy the files as necessary:

npm run watch

To stop the watcher, press ctrl+c.

To run a WP-CLI command

npm run env:cli <command>

WP-CLI has a lot of useful commands you can use to work on your WordPress site. Where the documentation mentions running wp, run npm run env:cli instead. For example:

npm run env:cli help

To run the tests

These commands run the PHP and end-to-end test suites, respectively:

npm run test:php
npm run test:e2e

To restart the development environment

You may want to restart the environment if you've made changes to the configuration in the docker-compose.yml or .env files. Restart the environment with:

npm run env:restart

To stop the development environment

You can stop the environment when you're not using it to preserve your computer's power and resources:

npm run env:stop

To start the development environment again

Starting the environment again is a single command:

npm run env:start

Credentials

These are the default environment credentials:

  • Database Name: wordpress_develop
  • Username: root
  • Password: password

To login to the site, navigate to http://localhost:8889/wp-admin.

  • Username: admin
  • Password: password

To generate a new password (recommended):

  1. Go to the Dashboard
  2. Click the Users menu on the left
  3. Click the Edit link below the admin user
  4. Scroll down and click 'Generate password'. Either use this password (recommended) or change it, then click 'Update User'. If you use the generated password be sure to save it somewhere (password manager, etc).