Вътре в Dev House: Как се справяме с автоматичното внедряване на теми за теми LITE и PRO WordPress

Както бихте си представили, разработването на теми е нещо, което ние доста правим тук в компанията. С около 4-5 нови тематични проекта в творбите във всеки даден момент и 80 теми през нашата директория като цяло (което означава активна поддръжка и по-нататъшно развитие и на тези), ние имаме доста пълни ръце.


В такава настройка е ключова оптимизация и дори автоматизация, когато е възможно.

Затова днес искаме да ви поканим през вратата на нашата къща за разработчици на ThemeIsle, така да се каже, и да ви покажем две конкретни части от нашия пъзел за развитие на тема.

Няма да крия, че този вид публикация е експеримент. Ако ви хареса, ние ще се постараем да извадим още такива неща в бъдеще.

По-конкретно, днешната тема е нещо, което може да се нарече, "автоматично разгръщане и визуална регресия архитектура за разработка на тема WordPress."

Чакайте, какво е автоматично разгръщане на тема?

Ако не говорите програмист, това, което означава на английски, е, че можете да разработвате теми за WordPress, да ги разгърнете на сървър и след това визуално да сравните разликите с предварително определена базова линия, без да се налага да правите нищо ръчно.

Всичко става автоматично, или по-скоро, "автомагически."

Как работи това?

Разработихме две услуги, за да се грижим за това автоматично разгръщане на тема: "Pirate Bootstrap" и "Pirate Wraith."

Първият, Pirate Bootstrap, може да бъде активиран чрез Webhooks от GitHub.

При издърпване на заявка, той използва нов екземпляр на WordPress, използвайки дадена тема от зададено хранилище + всички пакети и настройки на базата данни, взети от демонстрацията по подразбиране на темата в ThemeIsle.

Последният, Pirate Wraith, прави тест за визуална регресия (той също сравнява изображения от два източника). Тестът проверява новото разгръщане на темата спрямо демонстрацията от ThemeIsle – визуално – и след това генерира отчет. Въз основа на този отчет можете бързо да видите дали последните промени са имали влияние върху външния вид на темата.

С други думи, винаги когато работите върху тема и искате да сте сигурни, че последните ви промени в кода не са объркали дизайна на темата, можете да използвате Pirate Wraith за справяне със задачата на автопилот.

Нека обясним по-подробно всяка услуга:

Pirate Bootstrap – използва нов екземпляр на WordPress, използвайки зададена тема

Pirate Bootstrap се хоства на forks.themeisle.com

Pirate Bootstrap е изграден отгоре WP-CLI и има методи за генериране на пълни внедрения в WordPress базирани на тематични пакети и зависимости на ThemeIsle.

Елементите:

GitHub Webhooks

Webhooks се използват за извикване на API на Pirate Bootstrap при (отворено или синхронизирано) издърпване на заявки чрез изпращане на полезен товар JSON до http://forks.themeisle.com

Този удар стартира работния процес на внедряване в forks.themeisle.com. Така:

Автоматично внедряване на теми за теми LITE и PRO WordPress

Пример за полезен товар на GitHub Pull Request:

{
"действие": "отвори",
"номер": 1,
"pull_request": {

"глава": {
"етикет": "Преда-Богдан: производство",
"код": "производство",
"ша": "****",

"репо": {
"документ за самоличност": 82166596,
"име": "zerif-Lite",
"пълно име": "Преда-Богдан / zerif-Lite",
"собственик": {
"Влизане": "Преда-Богдан",

},
"частен": невярно,

"git_url": "Git: //github.com/preda-bogdan/zerif-lite.git",
"ssh_url": "[email protected]: Преда-Богдан / zerif-lite.git",
"clone_url": "https://github.com/preda-bogdan/zerif-lite.git",
"svn_url": "https://github.com/preda-bogdan/zerif-lite",

}
},

}
}

  • Ние използваме "ша" ключ, за да проверите дали е валидна заявка и дали ни е разрешено да обработваме полезния товар.
  • Ние използваме "Влизане", "име" и "код" да генерира наемател, ако не съществува.

Файловата структура

Файловата структура на сървъра е настроена така, че да съхраняваме всеки наемател в собствената му публична папка и да имаме основна инсталация на WordPress, която използваме за препратка със симлинк за всеки наемател.

Структурата на файла наемател е следната:

наемател /
| _ wp / / ** symlink core install на WordPress
| _ съдържание / / ** папка със съдържание на наемател за WordPress
| | _ теми / / ** папка с теми наемател за WordPress
| | _ папки / / ** наемател папка плъгини за WordPress
| _ .htaccess / ** автоматично генериран .htaccess за наемател
| _ vhost.conf / ** псевдоним конфигурационен файл за apache
| _ wp-config.php / ** автоматично генериран конфигурационен файл за наемател

Wp / папката препраща основната инсталация на WordPress, която се споделя от всички наематели. По този начин можем да имаме една инсталация на WordPress и множество изолирани случаи на WordPress сайтове, всеки с капсулирани настройки, файлове и ресурси.

Основните и наемателните файлове на wp-config.php

Основен пример за WordPress wp-config.php:

/ ** Абсолютен път към директорията на WordPress. * /
need_once ($ _SERVER [‘CONTEXT_DOCUMENT_ROOT’]. ‘wp-config.php’);

/ ** Задава WordPress варира и включени файлове. * /
need_once (ABSPATH. ‘wp-settings.php’);

Пример за наемател wp-config.php:

(Стойностите, съдържащи се в двойни къдрави скоби, се заменят автоматично при създаване на наемател.)

/ ** ДОБАВЕНО ОТ BOOTSTRAP API * /
{{MYSQL_CONNECTION_TENANT_DATA}}

define (‘AUTH_KEY’, ‘{{AUTH_KEY}}’);
дефинирайте (‘SECURE_AUTH_KEY’, ‘{{SECURE_AUTH_KEY}}’);
define (‘LOGGED_IN_KEY’, ‘{{LOGGED_IN_KEY}}’);
define (‘NONCE_KEY’, ‘{{NONCE_KEY}}’);
дефиниране (‘AUTH_SALT’, ‘{{AUTH_SALT}}’);
дефинирайте (‘SECURE_AUTH_SALT’, ‘{{SECURE_AUTH_SALT}}’);
дефинирайте (‘LOGGED_IN_SALT’, ‘{{LOGGED_IN_SALT}}’);
define (‘NONCE_SALT’, ‘{{NONCE_SALT}}’);

define (‘WP_DEBUG’, false);

define (‘WP_CONTENT_DIR’, ‘{{tenant_folder}} / content’);
define (‘WP_CONTENT_URL’, ‘{{tenant_folder}} / content’);
define (‘WP_PLUGIN_DIR’, ‘{{tenant_folder}} / content / plugins’);
define (‘WP_PLUGIN_URL’, ‘{{tenant_url}} / съдържание / приставки’);

ако (! дефинирано (‘ABSPATH’))
define (‘ABSPATH’, dirname (__ FILE__). ‘/ wp’);

След създаването на наемателя, ние заявяваме крайна точка за извличане на пакети, необходими за разгръщане на теми (плъгини, детски теми, база данни). Пакетите се кешират / съхраняват в скривалище на сървъра и се обновяват на всеки шест часа.

Следващата стъпка е да проверим дали темата, която искаме да разгърнем, е единично внедряване или трябва да генерира допълнителни теми от основната.

  • Ако става дума за еднократно внедряване, просто използваме git pull "ssh_url" в наемател / съдържание / теми /.
  • В случай, че това не е единично внедряване, правим git издърпване в tmp /, пускаме grunt generation и след това копираме получените папки в наемател / съдържание / теми /.

Задачата за генериране на грунт е стандарт за нас при работа с теми, които имат множество версии (обикновено "Lite" и "професионалист"), докато използвате същата кодова база (хранилище). Например, ако стартираме grunt generator за хранилището hestia-pro, ние също ще получим версията Lite автоматично.

След като се справим с горното, използваме WP-CLI, за да инсталираме всички необходими пакети (плъгини и / или дъщерни теми) и да импортираме сметището на базата данни от demo.themeisle.com.

Последните стъпки са за промиване на правилата за презаписване на .htaccess, актуализиране "SITEURL" и "У дома" с URL адреса на наемателя и URL адреса за WordPress Core, актуализирайте връзките за елементи от менюто и публикации, след което накрая презаредете апаш.

След това изпращаме на потребителя имейл с неговия разклонен URL адрес на заявката за изтегляне и регистрационния файл, генериран по време на внедряването. (Всеки генериран наемател следва този общ модел на URL адрес: http://forks.themeisle.com/github-login/theme-slug/branch/)

Pirate Bootstrap – съвети & трикове и друга полезна информация

Когато отидете на forks.themeisle.com, можете да получите достъп до терминален интерфейс, като натиснете "~" (клавиш tilde) и след това изпълнете куп полезни команди оттам. Най-подходящите са:

Нулиране на разполагане на наемател

Командата е пиратски нулиране наемател [наемател] (* тема-слуг) |

Пример:

пиратски нулиране наемател преди-bogdan / zerif-lite / развитие |  

Или:

пиратски нулиране наемател преди-bogdan / hestia / развитие hestia-pro |

Командата за нулиране връща наемателя обратно в първоначалното му състояние на разгръщане (нулиране на базата данни, преинсталиране на плъгини и / или дъщерни теми).

Преглед на трупите

Командата е show logs. Тази команда е полезна, ако трябва да проверите лог файловете след разполагане и още не сте получили имейл или трябва да отстраните грешката.

Забележка: Дневният файл се завърта, ако размерът на файла стане по-голям от 9000 байта, така че ако не можете да намерите това, което търсите, може да се наложи да проверите архива на журнала директно на сървъра.

Pirate Wraith – визуално сравнява две версии на тема

Pirate Wraith е домакин на wraith.themeisle.com

Pirate Wraith е изграден на върха призрак и има крайни точки за взаимодействие с Slack, Travis и AJAX заявки, за да използва възможностите на Wraith и да генерира тестове и доклади за визуална регресия.

Травис

Pirate Wraith излага крайна точка на wraith.themeisle.com, която слуша искания от Travis build, и "не успее" или "преминавания" изграждането според резултатите от теста за визуална регресия.

Вътре в .travis.yml файла добавихме нова матрица, която определя нова конструкция отгоре на съществуващите. Това задава разрешения за стартиране на bash скрипт в проекта и след това го изпълнява.

YML файлът на Travis:

матрица:
включват:
– PHP: "7.0"
before_install: chmod + x wraith.sh
Инсталирай:
before_script:
env: TEST_SUITE = Wraith_Visual_Regression_Testing WRAITH_FAIL = 5
скрипт: ./wraith.sh

Можете да видите това "Инсталирай" и "before_script" остават празни. Това е нарочно, така че компилацията да не наследява действията от предварително дефинирани състави. Интересуваме се само да стартираме bash скрипта (скрипт: ./wraith.sh) на тази компилация.

Също така да отбележа; ние задаваме променлива среда, наречена WRAITH_FAIL. Тази стойност се използва, за да каже на Pirate Wraith каква е максимално разрешената процентна разлика за преминаване на тест.

Сценарият Bash:

#! / Хамбар / Баш
WRAITH_SLUG = $ (възел -pe "изискват ( “./ package.json”). wraithSlug")
WRAITH_FAIL = $ {WRAITH_FAIL: -5}
тялото ="{
‘заявка’: {
‘travis_event_type’: ‘$ TRAVIS_EVENT_TYPE’,
‘travis_pull_request’: ‘$ TRAVIS_PULL_REQUEST’,
‘travis_repo_slug’: ‘$ TRAVIS_PULL_REQUEST_SLUG’,
‘travis_branch’: ‘$ TRAVIS_PULL_REQUEST_BRANCH’,
‘wraithSlug’: $ WRAITH_SLUG,
‘wraithFail’: $ WRAITH_FAIL,
}
}"
ехо "Задействане на изграждане на клон $ TRAVIS_PULL_REQUEST_SLUG
$ TRAVIS_PULL_REQUEST_BRANCH ‘на Travis."
изход = $ (curl -sw "% {HTTP_CODE}" -X POST \
-Н "Тип съдържание: application / json" \
-Н "Приемете: application / json" \
-Н "Travis-API-версия: 3" \
-д "$ {Тяло // \ “/ \"}" \
“Http://wraith.themeisle.com”)
HTTP_CODE ="$ {Изход: $ {# изход} -3}"
ако [$ {# изход} -ек. 3]; тогава
тялото =""
още
тялото ="$ {Изход: 0: $ {# изход} -3}"
Fi

ако [$ http_code! = 200]; тогава
ехо "$ изход";
изход 1
още
ехо "$ изход";
изход 0
Fi

Накратко, този скрипт създава полезен товар JSON, съдържащ променливи на обкръжаващата среда на Travis и такива, зададени от потребителите. Също така, той чете пакети.json и получава темата за плуване.

Втората част на скрипта прави POST заявка чрез "къдрица" да Pirate Wraith и анализира отговора, за да извлече HTTP / 1.1 състоянието на кода на отговора.

Използваме кода на състоянието, за да "Fail" или "минавам" изграждането. API на Pirate Wraith връща валидни HTTP / 1.1 кодове за всяка заявка, която обработва.

  • Той ще върне код 200 за завършени издържани тестове.
  • За всичко останало, компилацията ще бъде неуспешна с код на изход 1 (изход 1)

Може би се чудите какво сравнява Wraith. Отговорът е прост; той сравнява разгръщането на наемателя на текущата заявка за изтегляне от Pirate Bootstrap с демонстрацията на целевата тема.

За по-добро разбиране на жизнения цикъл на GitHub – Travis – Pirate Bootstrap – Pirate Wraith, ето една диаграма, илюстрираща работния процес на тези услуги:

Pirate Bootstrap / Pirate Wraith работен процес

Както виждаш, GitHub уведомява и двете Pirate Bootstrap и Травис за нова заявка за изтегляне. Bootstrap започва да въвежда наемател, пита Травис Pirate Wraith за да започнете тестовете.

Pirate Wraith сравнява версията на наемателя на демонстрацията с ThemeIsle Демонстрирайте и връщате резултатите към Травис, за да може минавам или Fail изграждането.

застой

В допълнение към поддръжката на Travis, Pirate Wraith има крайна точка за интеграция с Slack.

След завършване на изграждането от Travis (преминаване или неуспех) се генерира отчет в канала #eyepatch, съдържащ връзка към генерираната галерия и обобщение на откритите разлики.

Вградени са и няколко полезни Slack команди, които можете да използвате във всеки канал (Забележка: API на Pirate Wraith ще отговори в този канал с публичен отговор, затова препоръчваме да използвате командите в самостоятелен чат). Ето командите за Slack:

Нулиране на изходните снимки на историята на темата

/ история на историята [тема-слуг]

Пример:

/ wraith-история zerif-lite |

Сравняване с исторически снимки на тема

/ wraith-latest [тема-слуг] [URL]

Пример:

/ wraith-latest zerif-lite http: //forks.url/pb/zerif-lite |

Тази команда използва предоставения слуг за сравняване на дадения URL адрес с историята на него.

Сравняване на два URL адреса

/ wraith-сравнение [url] vs [url]

Пример:

/ wraith-сравнение http://url.one vs http: //url.two 

Pirate Wraith – съвети & трикове и друга полезна информация

Нулиране на изходните снимки на историята на темата

история на нулиране на with [topic-slug]

Тази команда нулира историята за дадения плужек.

Сравняване с исторически снимки на тема

with провери най-новото [тема-слуг] [URL]

Тази команда използва предоставения слуг за сравняване на дадения URL адрес с историята на него.

Сравняване на два URL адреса

with сравнение URL адреси [url-one] [url-two]

Преглед на трупите

Командата е show logs. Тази команда е полезна, ако трябва да проверите лог файловете. Работи по същия начин, както в Pirate Bootstrap.

Вашето вземане?

Това почти обобщава нашите две нови услуги и как те могат да бъдат използвани за автоматизиране на разгръщане на теми в WordPress.

Създадохме както Pirate Bootstrap, така и Pirate Wraith, за да обслужваме собствените си нужди, но вярваме, че тези концепции могат да бъдат също толкова полезни за всеки, който работи по подобни проекти за разработка. Особено, ако изграждате производни продукти (като темите за Pro и Lite WordPress в нашия случай) и искате да проверите какъв вид влияние имат специфичните промени в кода върху техните изяви.

Работата с темите на WordPress е, че кодовите бази на повечето съвременни теми имат тенденция да нарастват доста бързо и някои специфични елементи на тези кодови бази могат да имат непредвидимо въздействие върху появата на други елементи на темата. Опитът да хванете всичко това ръчно – само като гледате на нещата през собствените си човешки очи – може да бъде наистина предизвикателство, така че винаги е огромна помощ да въведете някаква форма на алгоритъм / автоматизация в микса.

Но какво мислите? Виждате ли стойността на инструменти като тези за други проекти?

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map