Provision the site
provision installs Drupal with your extension enabled on the codebase that assemble built. It prints a one-time login link when it finishes. This page covers what provision does, where the database lives and how to run Drush and log in.
To get a clean site without reassembling the codebase, run provision on its own:
- Make
- Ahoy
- No wrapper
make provision
ahoy provision
vendor/bin/eddy-provision
What it does
provision runs these steps in order:
- Installs Drupal from the
standardprofile into a fresh SQLite database, with anadminaccount and no Update Status module. To install from another profile, setDRUPAL_PROFILEin your shell or.envto its machine name, such asminimal(see Environment variables). - Enables your extension, as a module or as a theme.
- Rebuilds the caches.
- Enables each
drupal/*extension in thesuggestsection of yourcomposer.json, as a module or as a theme (see Optional dependencies). - Requests the front page once, so the caches are warm before you open the site.
- Links Drupal's browser test output into
.logs/browser_output, next to the other test artifacts. - Adds the reverse-proxy and trusted-host settings that a public tunnel needs, when the tunnel is on.
- Runs your
scripts/provision-*.shlifecycle scripts. - Prints the site URL and a one-time login link.
The database
The site keeps its data in an SQLite file at /tmp/site_<extension>.sqlite, where <extension> is your extension's machine name. Each provision starts the database from scratch. To look inside the file, open it with DB Browser for SQLite.
Run Drush
drush runs a Drush command against the site, with the site URL already set:
- Make
- Ahoy
- No wrapper
make drush status
make drush cr
make drush -- config:get system.site --format=json
ahoy drush status
ahoy drush cr
ahoy drush config:get system.site --format=json
build/vendor/bin/drush -l "$(vendor/bin/eddy-info site-url)" status
Ahoy passes the arguments through as they are. make reads its command line first, so follow these rules with make drush:
- Put
--before the arguments when they include an option, sincemakereads an option as its own. - An argument can't hold a space or name a
maketarget, such ashelp, unless it's an option value joined with=. - An option joined with
=reaches Drush after the other arguments, whatever its position. - A
NAME=valueword that isn't named like an option, such asDEBUG=1, stays amakevariable and doesn't reach Drush.
Log in
login prints a one-time login link for the admin account:
- Make
- Ahoy
- No wrapper
make login
ahoy login
vendor/bin/eddy-login
A one-time link stops working after it's opened. Drush 12 and 13 open the link in your browser unless uli gets --no-browser. login passes that option on those versions, so the link it prints still works. Drush 14 never opens a browser and rejects the option. When you run drush uli yourself on Drush 12 or 13, add --no-browser too.
To have login also draw the link as a QR code, set LOGIN_QRCODE=1 in .env or your shell. The QR code helps you open the site on a phone over a public tunnel. The link that provision prints has no QR code. Any non-empty value turns the QR code on, 0 included. To turn it off, remove the variable from .env and your shell. The QR code needs qrencode on PATH, and without it login prints the link and then fails.