2009-01-11 8 views

Trả lời

12

Đây là những gì chúng tôi làm:

  1. Mọi người làm việc trên các dự án của họ trong ngành của họ (mã, kiểm tra, vv)
  2. Khi tất cả mọi thứ có vẻ tốt, nó được sáp nhập vào Trunk
  3. phpUnderControl phép tái xây dựng Trunk , chạy tất cả các bài kiểm tra phpUnit của chúng tôi, xây dựng tài liệu, cập nhật db, v.v.
  4. Nếu tất cả mọi thứ trôi qua, chúng tôi hợp nhất thành Ổn định
  5. Ổn định được xây dựng lại hoàn toàn như Thân cây
  6. Ổn định được bằng tay thăng máy chủ sản xuất của chúng tôi

Chúng tôi có một vài kịch bản tùy chỉnh mà chăm sóc nâng cấp cơ sở dữ liệu của chúng tôi và đẩy chúng tôi để sản xuất. Đối với cơ sở dữ liệu của chúng tôi, chúng tôi giữ tất cả các vùng đồng bằng trong một thư mục duy nhất và tập lệnh kiểm tra mức DB hiện tại dựa vào các vùng đồng bằng có sẵn và, nếu cần, áp dụng chúng.

Để quảng cáo cho Sản xuất, chúng tôi có một tập lệnh khác lấy tất cả dữ liệu sản xuất và sau đó chạy rsync để đẩy lên các thay đổi.

Bạn không đề cập đến mức độ kiểm soát bạn có trên các máy chủ, nhưng quá trình tổng thể sẽ giống nhau cho sự phát triển chung.

+0

cảm ơn rất nhiều tôi đoán rằng tôi sẽ thử tính năng này. phpUnderControl trông rất hứa hẹn –

7

Tôi nghĩ mọi người làm những điều này hơi khác một chút, tùy thuộc vào ứng dụng chính xác. Đây là thiết lập của chúng tôi:

Trước khi phát hành:

  • Mọi người đều cam kết /trunk.
  • Khi chúng tôi muốn phát hành bản phát hành, chúng tôi sao chép thân cây thành /tags/yymmddhhiiss.
  • Chúng tôi ổn định thẻ.

Sau khi đã ổn định, chúng tôi chạy kịch bản triển khai:

  • Trên máy chủ sản xuất, kiểm tra các thẻ mới.
  • Lấy một bãi chứa cơ sở dữ liệu.
  • Dừng daemon và tắt (các) ứng dụng web.
  • Chuyển liên kết tượng trưng /current để trỏ đến thẻ được kiểm tra mới.
  • Chạy tập lệnh di chuyển.
  • Khởi động lại daemon và ứng dụng.

Nếu chúng ta cần phải đẩy một sự thay đổi nhỏ ra một cách nhanh chóng, chúng tôi kết hợp nó vào thẻ hiện tại, và sau đó chúng ta có thể chạy một quá trình hotfix đơn giản hơn nhiều tại máy chủ:

  • Dừng daemon và đóng cửa (các) ứng dụng web.
  • Chạy svn update
  • Khởi động lại trình nền và ứng dụng.

Lưu ý rằng có một số công cụ nhằm mục đích cấu trúc/tự động hóa các quy trình này. Phing là một, và Symfony có riêng batch system, vốn từng là một dự án độc lập được gọi là pake. Và nếu như thế là chưa đủ, Zend Framework sắp sửa tạo ra their own variant. Đó là tất cả thực sự là một chút lộn xộn, nhưng Phing có lẽ là sử dụng rộng rãi nhất. Bạn cũng có thể sử dụng một cái gì đó không phải là php cụ thể, chẳng hạn như Ant hoặc Capistrano. Chúng tôi chỉ sử dụng các kịch bản lệnh shell, về cơ bản sẽ đáp ứng nhu cầu tương tự.

Chúng tôi cũng có một xây dựng liên tục chạy, mà kiểm tra ra khỏi thân cây và chạy tất cả các bài kiểm tra. Hiện tại, chúng tôi chỉ có một tập hợp các tập lệnh shell cơ bản đang thực hiện, nhưng chúng tôi đang xem xét chuyển sang PhpUnderControl hoặc xinc.

Di chuyển có lẽ đáng được giải thích một chút. Theese chứa các thay đổi đối với cơ sở dữ liệu, cũng như các tác vụ khác phải được chạy cho bản phát hành mới. Di chuyển của chúng tôi là một chút đơn giản vào lúc này; Chúng tôi chỉ đơn giản có một thư mục với một loạt các tập lệnh .php.sql và trong quá trình di chuyển, các thư mục được chạy theo trình tự. Cách chúng tôi theo dõi những thay đổi nào đã được chạy, bằng cách dọn sạch thư mục migrations ngay sau khi thẻ mới được tạo. Nó có lẽ sẽ thông minh hơn để sử dụng cơ sở dữ liệu để ghi lại những thay đổi nào đã được chạy mặc dù. Chúng tôi được coi là chấp nhận một cái gì đó như ruckusing cho mục đích này.