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 или позже

Установка

  1. Добавьте itinerisltd.trellis_install_wp_cli_via_composer в galaxy.yml

      # galaxy.yml
    
    + - src: itinerisltd.trellis_install_wp_cli_via_composer
    + version: XXX.YYY.ZZZ # Проверьте последнюю версию!
    
  2. Замените роль 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] }
    
  3. Установите роли galaxy

    trellis galaxy install
    # Альтернативно
    ansible-galaxy install -r galaxy.yml --force
    
  4. Проведите повторное развертывание

    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

Устойчиво ли это или детерминировано?

Нет.

Конкретные точные версии пакетов могут помочь, но вам нужно будет управлять ими вручную.

Где найти больше подобных полезных вещей?

Где оставить отзывы :star::star::star::star::star:?

Спасибо! Приятно, что вам это нравится. Важно сообщить моему начальнику, что кто-то использует этот проект. Поскольку он не размещен на wordpress.org, пожалуйста, рассмотрите следующие варианты:

Тестирование

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 лицензией.

О проекте

Install WP-CLI via composer on Trellis servers

Установить
ansible-galaxy install ItinerisLtd/trellis_install_wp_cli_via_composer
Лицензия
mit
Загрузки
224
Владелец
We’re a full-service digital marketing agency that partners with ambitious clients to help them grow