2010-05-24 34 views
12

Có ai từng làm việc trên một dự án WordPress với nhiều nhà phát triển ở các địa điểm khác nhau không? Có các phương pháp hay nhất xung quanh các nhóm phát triển được phân phối và triển khai tự động không?Tự động hóa việc phát triển và triển khai Wordpress

Tôi có một nhóm các nhà phát triển khác nhau, bao gồm các nhà phát triển plugin, nhà phát triển chủ đề và cặp phong cách CSS đơn giản, ở một vài địa điểm khác nhau và tôi muốn thiết lập hệ thống tốt để mọi người có thể làm việc các phần riêng biệt của họ và liên tục triển khai các thay đổi mà không làm phiền mã của người khác.

Hệ thống đang chạy cài đặt WordPress-MU tại thời điểm này và cuối cùng nó sẽ được nâng cấp lên 3.0. Lý tưởng nhất, chúng tôi sẽ lưu trữ các chủ đề và bổ sung trong kiểm soát nguồn, và kể từ khi một vài sửa đổi đã được thực hiện cho mã WordPress cốt lõi, nó đã đi vào kho lưu trữ là tốt. Tôi đang gặp khó khăn trong việc tìm ra cách tốt nhất để cấu trúc kho lưu trữ và thực hiện các triển khai được kiểm soát nhưng phần nào tự động.

Làm cách nào để bạn xử lý và triển khai các môi trường phát triển, thử nghiệm, dàn dựng và sản xuất, khi các loại plugin và chủ đề khác nhau có thể lưu cấu hình trên hệ thống tệp hoặc trong cơ sở dữ liệu? Tôi nhận ra câu trả lời có thể là "Không sử dụng WordPress", nhưng giả sử tôi phải, cho tôi biết những gì bạn nghĩ,

Nhờ sự giúp đỡ của bạn,

Dave

+0

Tôi biết một bó của folks đang sử dụng Capistrano với railsless-triển khai cho việc triển khai WordPress http://theme.fm/2011/08/tutorial-deploying-wordpress-with-capistrano-2082/. Trong khi tôi đã thực hiện thành công điều này một vài lần tôi vẫn chưa hoàn toàn áp dụng nó vào quy trình làm việc của chúng tôi. Tôi cảm thấy sử dụng Git/GitHub làm cơ sở cho việc triển khai của bạn chắc chắn là một hướng đi tốt. Một tùy chọn khác mà chúng tôi đang xem xét là http://beanstalkapp.com/features/deployments – jeffreynolte

Trả lời

9

Sau đây là cách tôi đã kết thúc giải quyết vấn đề này cho đến nay:

Source code danh bạ:

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... 

Tôi đang sử dụng Hudson CI Server (http://hudson-ci.org/) để để tự động và thủ xây dựng sử dụng nhiệm vụ lật đổ thanh toán , phing, và phpunit, vv ... Về cơ bản, máy chủ Hudson lấy mã từ subversion phụ thuộc vào những gì bạn muốn triển khai, và rsync của các tập tin được triển khai từ máy chủ CI ra đến máy chủ đích.

Hoặc, trong trường hợp triển khai từ dàn dựng trực tiếp đến sản xuất, Hudson rsync của các tập tin từ dàn dựng, xuống đến máy chủ CI, và sau đó sao lưu vào sản xuất.

Tôi đã xây dựng thiết lập việc làm trong hudson cho các mảnh sau các chức năng:

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 

Những công việc hudson cũng có khả năng triển khai môi trường các file PHP cụ thể (ví dụ wp-config.php, db-config. php), cũng như các tệp cấu hình Apache và MySQL đến các vị trí thích hợp trên mỗi máy chủ. Trong một số trường hợp, chúng tôi triển khai cho nhiều máy chủ web và nhiều máy chủ cơ sở dữ liệu và hầu hết cấu hình xây dựng được xử lý thông qua tệp xây dựng phing và các tệp .properties được đề cập ở trên.

Trong tương lai, khi chúng tôi có môi trường tích hợp phát triển, chúng tôi có thể sẽ triển khai tự động khi kiểm tra svn bằng bất kỳ mã nào.

Thiết lập này cho phép các nhà phát triển khác nhau trong tổ chức với các kỹ năng khác nhau (CSS/HTML so với PHP chủ yếu) để làm việc riêng biệt và thay đổi mã của họ ra môi trường thích hợp một cách nhanh chóng mà không cần đến nhiều người không cần thiết. Hudson cho phép tôi khóa các công việc triển khai khác nhau để chỉ những người phù hợp mới có quyền truy cập vào cấu hình chúng và khởi động chúng.

Đó là loại tổng quan cấp cao về những gì tôi đã thiết lập, cho tôi biết suy nghĩ của bạn. Những phiền toái lớn nhất với thiết lập này là keypairs, tài khoản người dùng và quyền truy cập file với rsync trên tất cả các máy chủ khác nhau.

Dave

+0

Tò mò về thư mục "test /" bí ẩn mà bạn có. Làm cách nào để bạn có thử nghiệm tự động được định cấu hình cho các plugin và chủ đề Wordpress của bạn? Tôi chỉ dành vài giờ cuối cùng để tìm hiểu về bộ kiểm thử tự động Wordpress nhưng có vẻ như nó là một thách thức đối với việc dựng nó lên để tôi có thể chạy mã thử nghiệm với các plugin và chủ đề của riêng tôi. – jsdalton

+1

Tôi gặp rất nhiều rắc rối với bộ kiểm tra wp, vì vậy chúng tôi đã ngừng viết bài kiểm tra PHPUnit với các plugin và chủ đề của chúng tôi. Chúng tôi có thể viết các bài kiểm tra đơn vị cho những thứ như chuyển hướng 301 khi chúng tôi di chuyển blog từ máy chủ MT sang WP và đã hoạt động rất tốt cho đến nay. –

0

Đối với hệ thống tập tin chúng tôi sử dụng GIT và nó hoạt động rất tốt. Bạn có thể có một chi nhánh cho mỗi thành viên trong nhóm và sau đó hợp nhất nó vào chi nhánh sản xuất. Chúng tôi có thể giữ mã của chúng tôi tích hợp whitout bất kỳ khó khăn.

Đối với cơ sở dữ liệu, tôi tiếp tục bán phá giá cơ sở dữ liệu và chia sẻ với mọi người (thậm chí bạn có thể gửi nó đến repo GIT và sau đó mọi người sẽ có bãi chứa mới nhất).

Các vấn đề liên quan