Агрегация drush-алиасов
Кто‑то уже перешёл на Drupal Console, а кто‑то до сих пор использует Drush и Drush‑алиасы. Алиасы сильно упрощают работу с несколькими окружениями.
Типичный кейс: есть сайт рога-копыта.рф с алиасом @rk и окружения local, dev, test, prod. Очищать кэш приходится так:
drush @rk.local cc all
drush @rk.dev cc all
drush @rk.test cc all
drush @rk.prod cc allС агрегацией можно запускать одну команду.
Агрегационный алиас
Определим алиас all, который объединяет несколько окружений:
<?php
// ...обычные алиасы окружений выше...
// Агрегация алиасов.
$aliases['all'] = [
'site-list' => ['@rk.local', '@rk.dev', '@rk.test', '@rk.prod'],
];Файл кладём, например, в ~/.drush/rk.aliases.drushrc.php (или C:\Users\<user>\.drush\... под Windows).
Теперь можно делать так:
drush @rk.all cc all -yПример вывода:
You are about to execute 'cc all' non-interactively (--yes forced) on all of the following targets:
@rk.local
@rk.dev
@rk.test
@rk.prod
Continue? (y/n): y
rk.local >> 'all' cache was cleared in rk.local [success]
rk.dev >> 'all' cache was cleared in rk.dev [success]
rk.test >> 'all' cache was cleared in rk.test [success]
rk.prod >> 'all' cache was cleared in rk.prod [success]Флаг -y заранее отвечает «да» на все вопросы.
Будьте осторожны: агрегационные алиасы удобно использовать только для безопасных команд.
Бонус: алиасы по окружениям
Если есть много сайтов на поддержке, но те же самые окружения (local/dev/test/prod), можно агрегировать сайты по окружениям:
@my-sites.local@my-sites.dev@my-sites.test@my-sites.prod
Тогда обновление всех сайтов на local будет выглядеть, например, так:
drush @my-sites.local upc -y # обновляем код
drush @my-sites.local updb -y # накатываем обновления базы
drush @my-sites.local cron -y # запускаем cron