Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Replace wp-scripts env usage with wp-env in CI. #20280

Merged
merged 8 commits into from
May 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 4 additions & 37 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,44 +53,13 @@ install:
- npm run build
- |
if [[ "$INSTALL_WORDPRESS" = "true" ]]; then
# Download and unpack WordPress.
curl -sL https://github.com/WordPress/WordPress/archive/master.zip -o /tmp/wordpress-latest.zip
unzip -q /tmp/wordpress-latest.zip -d /tmp
mkdir -p wordpress/src
mv /tmp/WordPress-master/* wordpress/src

# Create the upload directory with permissions that Travis can handle.
mkdir -p wordpress/src/wp-content/uploads
chmod 767 wordpress/src/wp-content/uploads

# Grab the tools we need for WordPress' local-env.
curl -sL https://github.com/WordPress/wordpress-develop/archive/master.zip -o /tmp/wordpress-develop.zip
unzip -q /tmp/wordpress-develop.zip -d /tmp
mv \
/tmp/wordpress-develop-master/tools \
/tmp/wordpress-develop-master/tests \
/tmp/wordpress-develop-master/.env \
/tmp/wordpress-develop-master/docker-compose.yml \
/tmp/wordpress-develop-master/wp-cli.yml \
/tmp/wordpress-develop-master/*config-sample.php \
/tmp/wordpress-develop-master/package.json wordpress

# Install WordPress. The additional dependencies are required by the copied `wordpress-develop` tools.
cd wordpress
npm install dotenv wait-on
npm run env:start
sleep 10
npm run env:install
cd ..

# Connect Gutenberg to WordPress.
npm run env connect
npm run env cli plugin activate gutenberg
echo '{ "config": { "SCRIPT_DEBUG": false, "WP_PHP_BINARY": "php" } }' > .wp-env.override.json
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I had to also add "WP_PHP_BINARY": "php" here, as the default config was being overwritten by the .wp-env.override file. Using the override file like this won't be very maintainable.

Perhaps looking into command line options for overriding individual settings could be an option. e.g.:

npm run wp-env start --config SCRIPT_DEBUG=false

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we are also looking to add support for setting the config for different environments in .wp-env.json so that we can turn of SCRIPT_DEBUG etc for the tests environment without having to override anything.

npm run wp-env start
fi
- |
if [[ "$E2E_ROLE" = "author" ]]; then
npm run env cli -- user create author author@example.com --role=author --user_pass=authpass
npm run env cli -- post update 1 --post_author=2
npm run wp-env run tests-cli "wp user create author author@example.com --role=author --user_pass=authpass"
npm run wp-env run tests-cli "wp post update 1 --post_author=2"
fi

jobs:
Expand Down Expand Up @@ -162,14 +131,12 @@ jobs:
env: WP_ENV_TESTS_PORT=8887 WP_ENV_PORT=8886 # TODO: Remove tests port when scripts/env is replaced with wp-env.
script:
- chmod -R 767 ./build
- npm run wp-env start
- npm run test-php && npm run test-unit-php-multisite

- name: PHP unit tests (PHP 5.6)
env: LOCAL_PHP=5.6-fpm WP_ENV_TESTS_PORT=8887 WP_ENV_PORT=8886 # TODO: Remove tests port when scripts/env is replaced with wp-env.
script:
- chmod -R 767 ./build
- npm run wp-env start
- npm run test-php && npm run test-unit-php-multisite

- name: E2E tests (Admin) (1/4)
Expand Down
9 changes: 9 additions & 0 deletions packages/env/lib/commands/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,15 @@ module.exports = async function start( { spinner, debug } ) {
config.coreSource.path,
config.coreSource.testsPath
);

// Ensure the tests uploads folder is writeable for travis,
// creating the folder if necessary.
const testsUploadsPath = path.join(
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we chmod more broadly to allow other things to have write access (e.g. chmod all of wp-content)? See some discussion around #22454 (comment) in which a PHP test doesn't have access to what it wants

This may also remove the need for a different chmod I added in .travis.yml for the PHP test steps

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That seems like a good call. I can put together a separate PR to cover it.

config.coreSource.testsPath,
'wp-content/uploads'
);
await fs.mkdir( testsUploadsPath, { recursive: true } );
await fs.chmod( testsUploadsPath, 0o0767 );
}
} )(),

Expand Down