trellis_install_wp_cli_via_composer
Установка WP-CLI через Composer
Установите WP-CLI через composer на серверах Trellis.
Цель
Проблема
[С версии WP-CLI v2.0.0,] проблема с зависимостями, требующими старую версию Symfony, решена. Единственный компонент Symfony, который мы все еще используем, - это
symfony/finder
, так как для него нет верхнего ограничения версии.-- https://make.wordpress.org/cli/2018/08/08/wp-cli-v2-0-0-release-notes/
Тем не менее, фары, содержащие зависимости WP-CLI, загружают эти зависимости всегда из phar. В результате их версии заблокированы.
Например: WP-CLI v2.4.0 использует symfony/process
версии v2.8.5 (как зависимость symfony/finder
). Если у нас есть my-awesome-command
, который требует symfony/process:5.0.0
, установка, как ожидалось, выполнится успешно. Однако symfony/process
v2.8.5 (из WP-CLI phar) всегда используется, и новая версия symfony/process
, требуемая my-awesome-command
, игнорируется. В результате my-awesome-command
не работает при попытке использовать symfony/process
.
Решение
Установка WP-CLI через composer решает эту проблему.
Переменные роли
# Удаляемые пакеты Composer перед установкой WP-CLI
# По умолчанию: []
wp_cli_composer_global_remove_packages:
- wp-cli/wp-cli-bundle
- psy/psysh
# Пакеты Composer для установки
# По умолчанию: "wp-cli/wp-cli-bundle:{{ wp_cli_version }}"
wp_cli_composer_global_require_packages:
- "wp-cli/wp-cli:2.4.0"
- "wp-cli/package-command:^2"
- "psy/psysh:^0.9.12"
# Пакеты WP-CLI для установки
# По умолчанию: []
wp_cli_packages:
- "typisttech/image-optimize-command:@stable"
- "[email protected]:Yoast/wp-cli-faker.git"
# Путь к WP-CLI
# По умолчанию: /usr/bin/wp
wp_cli_bin_path: /usr/bin/wp
# Путь к автодополнению WP-CLI
# По умолчанию: /etc/bash_completion.d/wp-completion.bash
wp_cli_completion_path: /etc/bash_completion.d/wp-completion.bash
Требования
- Trellis версии 1.3.0 или позже
- Ansible версии 2.7.0 или позже
- Python версии 3.7.6 или позже
Установка
Добавьте
itinerisltd.trellis_install_wp_cli_via_composer
вgalaxy.yml
# galaxy.yml + - src: itinerisltd.trellis_install_wp_cli_via_composer + version: XXX.YYY.ZZZ # Проверьте последнюю версию!
Замените роль
wp-cli
наitinerisltd.trellis_install_wp_cli_via_composer
# server.yml - - { role: wp-cli, tags: [wp-cli] } + - { role: itinerisltd.trellis_install_wp_cli_via_composer, tags: [wp-cli] }
Установите роли galaxy
trellis galaxy install # Альтернативно ansible-galaxy install -r galaxy.yml --force
Проведите повторное развертывание
trellis provision production # Альтернативно ansible-playbook server.yml -e env=production
Часто задаваемые вопросы
Как установить только определенные команды вместо всего комплекта WP-CLI?
По умолчанию устанавливается весь пакет WP-CLI. Чтобы сохранить ваши серверы "легкими", устанавливайте пакеты команд избирательно:
wp_cli_composer_global_remove_packages:
- wp-cli/wp-cli-bundle
wp_cli_composer_global_require_packages:
# Необходим: фреймворк WP-CLI
- "wp-cli/wp-cli:^2.4"
# Установить только необходимые команды:
- "wp-cli/core-command:^2"
- "wp-cli/cron-command:^2"
- "wp-cli/db-command:^2"
- "wp-cli/package-command:^2"
Что делать, если composer не может установить пакеты из-за конфликтующих ограничений версий?
Дважды проверьте существующие пакеты composer. Затем измените ограничения версий через переменные роли. Возможно, вам потребуется удалить некоторые пакеты.
Как проверить, установлен ли WP-CLI через composer?
# Плохо: установлен через Trellis, т.е.: phar
$ wp cli info
WP-CLI root dir: phar://wp-cli.phar/vendor/wp-cli/wp-cli
# Хорошо: установлен через эту роль, т.е.: composer
$ wp cli info
WP-CLI root dir: /home/web/.composer/vendor/wp-cli/wp-cli
Устойчиво ли это или детерминировано?
Нет.
Конкретные точные версии пакетов могут помочь, но вам нужно будет управлять ими вручную.
Где найти больше подобных полезных вещей?
- Статьи в блоге Itineris
- Больше проектов на профиле Itineris на GitHub
- Больше плагинов на профиле Itineris и TangRufus на wp.org
- Подписывайтесь на @itineris_ltd и @TangRufus в Twitter
- Нанять Itineris для создания вашего следующего замечательного сайта
Где оставить отзывы :star::star::star::star::star:?
Спасибо! Приятно, что вам это нравится. Важно сообщить моему начальнику, что кто-то использует этот проект. Поскольку он не размещен на wordpress.org, пожалуйста, рассмотрите следующие варианты:
- напишите что-то хорошее в твиттере с упоминанием @itineris_ltd и @TangRufus
- :star: поставьте звезду этому репозиторию на Github
- :eyes: следите за этим репозиторием на Github
- пишите блоги
- отправляйте pull requests
- нанять Itineris
Тестирование
ansible-playbook -i 'localhost,' --syntax-check tests/test.yml
Обратная связь
Пожалуйста, предоставьте отзывы! Мы хотим сделать эту библиотеку полезной в как можно большем количестве проектов. Пожалуйста, отправьте опрос и сообщите, что вам нравится или не нравится, или сделайте форк проекта и предложите улучшения. Нет такой проблемы, которая была бы слишком мелкой.
Безопасность
Если вы обнаружите какие-либо проблемы с безопасностью, пожалуйста, напишите на [email protected], а не используйте трекер проблем.
Авторы
trellis_install_wp_cli_via_composer - проект Itineris Limited, созданный Tang Rufus.
Полный список участников можно найти здесь.
Лицензия
trellis_install_wp_cli_via_composer выпущен под MIT лицензией.
ansible-galaxy install ItinerisLtd/trellis_install_wp_cli_via_composer