BLT 11 primarily brings Drush 10 and Drupal 8.8 support, a much lighter weight install (without a lot of old dependencies such as Selenium or webflo/drupal-core-require-dev), and some new polish such as the ability to simulate deploys from Travis CI before they actually happen (so you can catch deploy-related errors before merging PRs). These improvements necessitate a few backwards-compatibility breaks for some customers, as listed below. For a comprehensive list of changes, see the CHANGELOG.
Note that as of the stable 11.0.0 release, BLT 10.x will receive only security fixes for the next 6 months per the support policy in the README.
How to upgrade
- Review the major changes below to ensure that you are prepared to upgrade.
- Ensure that all Composer dependencies (especially BLT, Drupal core, and Drupal modules) are already up to date. Ensure that your project, and especially your hosting environment, is running Drush 9.6 or later to avoid a potential version mismatch error when upgrading to Drush 10.
- When you are ready to upgrade, run
This should automatically run a BLT update script, which may also modify your composer.json. Make sure to follow any instructions provided by the upgrade script, especially running
composer require acquia/blt:^11.0.0 --no-update && composer update
composer updateagain to apply changes to composer.json.
- Review and commit any changed files.
Major enhancements (some potentially breaking)
Drush 10 support
Drush has been upgraded from 9 to 10. There are no known issues related to this upgrade, although you may wish to review the Drush 10 release notes. If you prefer to use Drush 9, it is still supported for now. (PR #3905)
Migration from Drupal Scaffold to Composer Scaffold
Composer cannot natively place certain assets (such as .htaccess) in the typical locations required for a Drupal installation. Prior to Drupal 8.8, this was worked around via the Drupal Scaffold Composer plugin. Drupal 8.8 introduces a new version of this plugin, the Composer Scaffold plugin, and deprecates Drupal Scaffold. All users will eventually need to migrate from Drupal Scaffold to Composer Scaffold.
To support this transition, BLT 11.x has moved the dependency on the Scaffold plugin from BLT's composer.json to the project template composer.json (i.e. your project's root composer.json.) It includes an update hook to automatically move this dependency, which should have no functional impact on your project.
Moving the dependency out of BLT's composer.json allows individual projects to upgrade to Composer Scaffold on their own schedule. In the near future, BLT 11 will switch the project template (which only affects new BLT-based projects) to use Composer Scaffold, and will provide a migration command to assist existing BLT-based projects in migrating to Composer Scaffold.
Drupal core testing
Users who run Drupal tests (i.e. Simpletest or core/contrib PHPUnit tests) via the
tests:drupal commands may be affected by these changes.
- Chrome is now used by default instead of Selenium for Drupal core tests. (PR #3931)
- PHPUnit is the default core test runner (instead of run-tests.sh)
- Nightwatch tests are now supported (choose Nightwatch instead of PHPUnit / run-tests.sh as your test runner)
- Drupal core dev dependencies (webflo/drupal-core-require-dev) are no longer installed by default. Users that wish to run Drupal core tests going forward will need to ensure they have Drupal core dev dependencies installed, i.e. by installing webflo/drupal-core-require-dev. (PR #3908)
File syncing options renamed
Private file syncing via Drush (as part of the
blt sync command) is now supported. This change necessitated renaming the configuration parameter
sync.public-files. If you've set this config value in your configuration files or commands, be sure to rename it. (PR #3907)
TravisCI and Acquia Pipelines integration
A few changes have been made to TravisCI and Pipelines integration. Some of these changes are in the built-in BLT scripts and will be applied automatically. Other changes require that you update your .travis.yml or acquia-pipelines.yml files via
blt recipes:ci:travis:init or
- The Node.js version in Acquia Pipelines will no longer be updated automatically. If you wish to use a Node.js version other than what is provided by default by Acquia Pipelines, you can update it via the example snippet in your acquia-pipelines.yml file. (PR #3901)
- TravisCI now checks for modified files during deploys by default, and additionally simulates deploys during testing phases to catch any deployment-related errors as soon as possible. This may catch build errors that have previously gone unnoticed, which can be resolved according to this guidance. (PR #3927)
- The template .travis.yml file has been cleaned up and simplified, and you may wish to regenerate yours based on this template.
Selenium server removed
BLT no longer installs Selenium Server Standalone by default, since it's a resource-intensive dependency that has been largely supplanted by Google Chrome for PHPUnit and Behat testing. You can still use Selenium for these types of tests, you'll just need to ensure that Selenium is available (i.e. by running
composer require se/selenium-server-standalone). (PR #3878)
Drush alias generation removed
D9 deprecated code scanning enabled by default
When you run
blt tests or
blt validate, BLT 11.x will scan your custom modules and themes for any code that will be deprecated in Drupal 9. You can also run these scans individually via the
tests:deprecated:themes commands. You can disable these scans by setting the configuration values
validate.deprecation.themes to false. (PR #3946)