Information for: DEVELOPERS   PARTNERS   SUPPORT

Acquia BLT tooling

The following is a list of operating system-level tools that Acquia BLT uses.

Not all of these are absolutely required. Some are required only when using certain features of Acquia BLT, such as Selenium-based testing or Drupal VM integration.

System-level packages

For installation instructions, see Installing Acquia BLT.

Tool Required Purpose
PHP Yes

Required by several tools, including Composer, Drush, Robo, and Drupal. Ensure the following recommendations are met:

  • Acquia BLT requires PHP 7.1 or later. You can determine your existing version by running php -v.
  • Acquia BLT requires PHP 5.6 or later. You can determine your existing version by running php -v.
  • The memory_limit for PHP is set to 2 GB or higher (for Composer). You can find the php.ini file for your PHP CLI by executing php --ini and looking for the Loaded Configuration file.
Composer Yes Used to manage project-level dependencies for Acquia BLT and Drupal. Composer is the default package manager for the PHP community, and is also used by Drupal core.
For information about using Composer in conjunction with Acquia BLT, see Using Composer to manage dependencies.
You can update to the latest version of Composer by using the following command: composer self-update
Git Yes A distributed version control system. It is the VCS tool for the Drupal community.
Drush Yes Command line shell and Unix scripting interface for Drupal. Acquia BLT uses Drush to communicate with Drupal from the command line.
Drush is both a system level and a project level dependency, which is unusual. It is possible to have one version of Drush on your computer and a different version of Drush used in your project directory. This is useful but frequently causes confusion.
Drush uses a special launcher script to look for a copy of Drush that is specific to your project. BLT ships such project-level drush binary in the vendor/bin directory of your project. Your global Drush installation defers to the project level binary when executing drush from an Acquia BLT project directory.
Java No Required by Selenium to communicate with Chrome. Selenium is one option for executing JavaScript Behat tests. For more information, see Automated testing.
ChromeDriver No Required by Selenium to communicate with Chrome. Selenium is one option for executing JavaScript Behat tests. For more information, see Automated testing.
Ansible No Required by Drupal VM, which is one option for local development.
Vagrant No Required by Drupal VM, which is one option for local development.
VirtualBox No Required by Drupal VM, which is one option for local development.
Yarn No A package manager for JavaScript.
nvm No Manages multiple versions of NodeJS on a single computer.

Validation and testing tools

The following tools are installed by Acquia BLT with Composer:

  • Behat
  • PHPUnit
  • PHP Code Sniffer

Local environments

Although you can use any Drupal-compatible local development environment with Acquia BLT, specific support is provided for Drupal VM.

For more information, see Local development with Acquia BLT.

Continuous integration and continuous delivery solutions

Although you can use any continuous integration (CI) or continuous delivery (CD) tool with Acquia BLT, specific support (in the form of default configuration files) is provided for the following tools:

For more information, see Continuous integration.

Hosting

Although you can host an Acquia BLT project in any Drupal-compatible hosting environment, specific support is provided for both Cloud Platform and Site Factory with the following services:

  • Providing Cloud hooks.
  • Providing Acquia-specific default configuration in settings.php.
  • Structuring project directories to match Cloud Platform repository’s default structure.

Headless Chrome

Headless Chrome is used by default for Behat tests, although you can also use Selenium or PhantomJS.

Note for Docker users

Connections to Headless Chrome will occasionally time out in containerized environments, such as Docker. For discussion and a possible solution, see this issue on GitHub.