Автоматизация разработки и развертывания Wordpress - PullRequest
12 голосов
/ 24 мая 2010

Кто-нибудь когда-нибудь работал над проектом WordPress с несколькими разработчиками в разных местах?Существуют ли лучшие практики для распределенных групп разработки и автоматизированных развертываний?

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

В данный момент система выполняет установку WordPress-MU, и она будетв итоге будет обновлен до 3.0.В идеале, мы должны хранить темы и плагины в управлении исходным кодом, и, поскольку в основной код WordPress было внесено несколько модификаций, он также должен войти в репозиторий.У меня возникают проблемы с поиском наилучшего способа структурирования хранилища и выполнения контролируемых, но несколько автоматизированных развертываний.

Как вы справляетесь с работой и развертыванием в средах разработки, тестирования, подготовки и производства, когда используются разные типыплагинов и тем могут хранить конфигурации в файловой системе или в базе данных?Я понимаю, что ответом может быть «Не используйте WordPress», но, если мне придется, дайте мне знать, что вы думаете,

Спасибо за вашу помощь,

Дейв

Ответы [ 3 ]

9 голосов
/ 14 июля 2010

Вот как я решил эту проблему до сих пор:

Каталоги исходного кода:

build/ - build files for phing and environment-specific properties files
    build.xml
    src_qa.properties - properties to use the qa server as the source for a deployment
    dst_qa.properties - properties to use the qa server as the destination for a deployment
    etc... for other environments
conf/ - contains environment specific configuration files, each in a subfolder named after the environment
    dev/
        db-config.php - config file for HyperDB - http://codex.wordpress.org/HyperDB
        default - Apache conf that holds ServerAlias configs for multi-site WordPress
        hosts - useful for developers to redirect their browser to various domains in different environments
        htaccess.dist - for WPMU
        httpd.conf - main Apache config file, specific to each environment
        my.cnf - mysql config file
        wp-config.php - main wordpress config file
    qa
        (same as dev/ but with different values in each file)
    staging
        (same as dev/ but with different values in each file)
    prod
        (same as dev/ but with different values in each file)
src/ - wordpress source code
    wp-admin/
    wp-content/
        mu-plugins/
        plugins/
        themes/ 
    wp-includes/
test/ - holds WP test suite and custom tests for plugins, themes, etc...

Я использую сервер Hudson CI (http://hudson -ci.org / ) к автоматическим и ручным сборкам с использованием задач извлечения Subversion, phing, phpunit и т. д. По сути, сервер Hudson извлекает код из Subversion в зависимости от того, что вы хотите развернуть, и выполняет rsync для файлов, которые будутразвернут с сервера CI на сервер назначения.

Или, в случае развертывания с промежуточного размещения непосредственно на производство, Hudson rsync переводит файлы с промежуточного уровня на сервер CI, а затем обратно в производство.

У меня есть настройка заданий сборки в hudson для следующих функций:

core WP code - deploys core WP files and mu-plugins from src to dst
    svn to qa
    svn to staging
    staging to prod
WP plugins/ folder - deploys only the plugins folder 
    svn to qa
    svn to staging
    staging to prod
WP themes/ folder - deploys the entire themes folder
    svn to qa
    svn to staging
    svn to prod
Specific themes - deploys a specific theme (chosen through a drop down during the build process using Hudson's parameterized build feature - http://wiki.hudson-ci.org/display/HUDSON/Parameterized+Build)
    svn to qa
    svn to staging
    svn to prod

Задания hudson также имеют возможность развертывать специфичные для среды файлы PHP (например, wp-config.php)., db-config.php), а также конфигурационные файлы Apache и MySQL в соответствующих местах на каждом сервере.В некоторых случаях мы выполняем развертывание на нескольких веб-серверах и нескольких серверах баз данных, и большая часть конфигурации сборки выполняется с помощью файла сборки phing и файлов .properties, упомянутых выше.

В будущем, когдау нас есть среда интеграции разработки, мы, вероятно, сделаем автоматическое развертывание после проверки svn любого кода.

Эта настройка позволяет различным разработчикам в организации с разными наборами навыков (в основном CSS / HTML и PHP) работать отдельно ибыстро вывести свои изменения кода в подходящие среды без привлечения ненужных людей.Хадсон позволяет мне блокировать различные задания по развертыванию, так что только нужные люди имеют доступ к их настройке и запуску.

Это общий обзор того, что я настроил, дайте мне знать, что вы думаете.Самыми большими неудобствами при такой настройке были пары ключей, учетные записи пользователей и права доступа к файлам с помощью rsync на всех различных серверах.

Dave

0 голосов
/ 30 мая 2018

Я нашел свиток весьма полезным.Это платная услуга, но стоит попробовать.Нет сценариев Нет кода вообще.Просто зарегистрируйтесь и следуйте рецепту там.Вы сделали.Кроме того, он выполняет предварительные проверки развертывания, что делает развертывание достаточно простым и легким.

0 голосов
/ 13 июля 2010

Для файловой системы мы используем GIT, и она работает очень хорошо.Вы можете создать ветку для каждого члена команды, а затем объединить ее с производственной веткой.Мы можем сохранить наш код интегрированным без каких-либо проблем.

Для базы данных я продолжаю создавать дамп базы данных prod и делиться ею со всеми (вы даже можете отправить ее в репозиторий GIT, и тогда у всех будет последний дамп).

...