2 марта 2018

Автоматизация обновлений CleanTalk Anti-Spam для WordPress

Блог компании Блог компании CleanTalk Anti-SpamWordPress
Если вы обслуживаете пару-тройку сайтов, то обновление плагинов не вызывает каких-то сложностей. Сложности появляются, если вы обслуживаете несколько десятков, а то и сотен сайтов.

CleanTalk Антиспам требует частых обновлений (нам приходится выпускать новую версию раз в 1-2 недели), на это есть много причин.

WordPress, как конструктор, имеет огромное множество плагинов, тем, виджетов и т.д. которые не всегда они разработаны с учетом WordPress Codex, имеют разную архитектуру и обработку событий. Поэтому могут возникать ошибки интеграции CleanTalk с разными компонентами, особенно редкими.

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

При нашей частоте выхода обновлений для плагина требуется опция автообновления. Если эту опцию делать в настройках плагина, то все равно пользователю потребуется зайти на каждый сайт в настройки плагина и установить её. Но что делать в ситуации, когда пользователь не хочет включать автообновление, а надо обновить плагин сразу на сотне сайтов?

Для удобства управления сервисом опция автообновления была реализована в Панели Управления сервисом.

Автообновление позволяет обновить плагин разово на одном сайте, группе сайтов или включить автообновление на всех сайтах.

Как это работает


Исторически сложилось, что мы контролируем используемую клиентом версию плагина, и при обращении клиентов и анализе обратной связи, нам требуется знать версию используемого плагина. Каждый антиспам плагин, при каждом запросе, присылает в параметрах свою версию. Номер версии сравнивается с номером в репозитории, и если версии отличаются, то в Панели управления мы показываем предупреждение о необходимости обновления.

image

Далее, при клике по ссылке открывается модальное окно с вариантами обновлений.

image

При выборе опции сервер делает специальный запрос плагину на сайте клиента.

Плагин, получив вызов, проверяет параметры вызова на предмет подлинности и начинает работу. Автообновление реализовано через модифицированный класс автообновления плагинов Wordpress. После завершения работы класса плагин проверяет версию обновленных файлов и делает запрос на сайт (сам на себя). Если HTTP код ответа — 200, то докладывает об этом серверу выведя на страницу “OK” и делает специальный API вызов, докладывая о новой версии. Если код ответа отличается от 200, то плагин делает откат файлов до предыдущей версии и отвечает северу строкой с кодом ошибки и техническими параметрами.

После успешного обновления, статус в Панели управления сервисом меняется на “App has been updated”.
Теги:wordpresswordpress pluginswordpress plugin
Хабы: Блог компании Блог компании CleanTalk Anti-Spam WordPress
+9
855 6
Комментировать
Лучшие публикации за сутки