2009-11-24 9 views
8

Tôi là thành viên của nhóm phát triển hoạt động trên nhiều dự án dựa trên CMS, sử dụng các hệ thống như Joomla và Drupal.Cách triển khai: cơ sở dữ liệu, nguồn và nhị phân thay đổi trong 1 bản vá?

Trong quá trình phát triển của chúng tôi, tất cả các thay đổi mã của chúng tôi đều được quản lý bên trong Git. Khi kết thúc chạy nước rút, chúng tôi tạo một DIFF mà chúng tôi có thể áp dụng qua đến trang web đang hoạt động.

Vấn đề là hầu hết thời gian, những thay đổi bao gồm

  • Database Schema Changes
  • Cơ sở dữ liệu dữ liệu thay đổi
  • Source Code thay đổi
  • thay đổi tập tin nhị phân (như hình ảnh)

Xử lý Git Diff Mã nguồn thay đổi rất đẹp. Các tệp nhị phân chỉ không được bao gồm trong Diff trừ khi tham chiếu đến thực tế là các tệp đã thay đổi.

Thay đổi giản đồ cơ sở dữ liệu và thay đổi dữ liệu cơ sở dữ liệu là một mớ hỗn độn.

Tôi đã lang thang nếu bất kỳ thứ gì giống như một hệ thống vá thống nhất tồn tại có thể được sử dụng để triển khai tất cả những thay đổi này trong 1 bản vá.

Vì vậy, câu hỏi là, "Có một hệ thống có thể được sử dụng để triển khai tất cả các thay đổi trong 1 bắn?

Lý tưởng nhất, hệ thống này sẽ cho phép để chạy khô ương như vá, nhưng đối với tất cả các loại 4 dữ liệu

Sửa:. Cảm ơn mọi người cho ý kiến ​​phản hồi mà bạn cung cấp, đó là một điểm khởi đầu cho việc nghiên cứu của tôi trong lĩnh vực này

Dưới đây là những gì tôi tìm thấy cho đến nay.:

  1. Thật khó để triển khai php dựa ứng dụng sử dụng bao bì linux hệ thống bởi vì thay đổi đối với dự án xảy ra lặp đi lặp lại khá sau đó là phiên bản.

  2. Nó sẽ có thể sử dụng dbconfig để triển khai thay đổi cho một dự án , nhưng vấn đề là tạo diffs mysql db (schema và dữ liệu)

  3. những gì thực sự là mất tích cho việc triển khai các ứng dụng php dựa là một người quản lý triển khai sẽ được cài đặt trên máy chủ và sẽ là giao diện cho việc triển khai các bản vá lỗi

Tôi đã bắt đầu một Google Wave về chủ đề này và đã tạo ra rất nhiều thông tin. Nếu bất kỳ ai quan tâm đến việc đọc wave này, vui lòng cho tôi biết và tôi sẽ thêm bạn.

Trả lời

2

Để xử lý cài đặt và nâng cấp ứng dụng của chúng tôi, chúng tôi sử dụng debian packaging system. (.deb package)

Bối cảnh: Chúng tôi đang tạo ứng dụng J2EE + Flex. Vận chuyển và quản lý thông qua VPN. Vì vậy, không xa bạn.

tươi cài đặt và nâng cấp cho một phiên bản khác được thực hiện thông qua con rối (một hệ thống để tự động các tác vụ quản trị hệ thống: ông cài đặt .deb của chúng tôi)

Trong .deb chúng tôi có

  1. biên soạn của chúng tôi sourcecode
  2. giản đồ cơ sở dữ liệu (xử lý bởi [db-config] [1])
  3. thứ nhị phân
  4. làm thế nào để cài đặt Xuyên apt tất cả các ứng dụng khác ne eded (mysql, tomcat ...)

= Tất cả các công cụ cho một tươi cài đặt

Chúng tôi cũng thêm các thông tin để đi từ một phiên bản khác

  1. kịch bản cho việc nâng cấp cơ sở dữ liệu (đối với từng phiên bản)
  2. mới nhị phân
  3. công cụ mới để lauch vào đầu máy (ví dụ: một vài tuần trước, chúng tôi có thêm một máy chủ ActiveMQ)

=> Khi .deb được tạo đúng, chúng tôi có thể cài đặt hoặc nâng cấp liền mạch trong một thao tác. (nó được tạo tự động, không có bất kỳ dấu nhắc nào).

Toàn bộ số tiền là một .deb cho mỗi lần thực hiện, mỗi .deb có số phiên bản và chữ ký. Bạn có thể chọn bất kỳ .deb nào của chúng tôi và thực hiện cài đặt mới hoặc nâng cấp từ phiên bản thực tế lên số phiên bản mà anh ta giữ.

.deb nằm trong hệ thống tích hợp liên tục của chúng tôi. (chúng tôi xây dựng a.deb mỗi giờ, như thể chúng ta chuẩn bị phát hành phiên bản mới)


Lợi ích là gì?

  • Cài đặt/nâng cấp tự động với sự tự tin.
  • Rollback một phiên bản
  • chạy khô được natively hỗ trợ

Trong trường hợp chính xác của bạn

* Database Schema Changes 
* Database Data Changes 
* Source Code changes 
* Binary file changes (like images) 

Cơ sở dữ liệu => bạn sẽ phải viết kịch bản chuyển đổi. Một cho mỗi phiên bản. (Ví dụ: 1.2-update.sql 1,3 update.sql)

Mã nguồn và nhị phân => thêm chúng, nói trong phiên bản phù thủy họ phải được sao chép/sử dụng

Chỉnh sửa: Tôi không chắc chắn về mã nguồn. Chúng tôi đang làm điều đó với mã biên soạn ...


Một số liên kết để bắt đầu:

https://wiki.ubuntu.com/PackagingGuide/Complete

http://www.debian.org/doc/manuals/maint-guide/index.fr.html#contents (trong tiếng Pháp)

[1]: http://pwet.fr/man/linux/formats/dbconfig dbconfig

[1]: http://www.debian.org/doc/FAQ/ch-pkg_basics.en.html debian

+0

+1 phù hợp với những gì tôi đã nói, với hệ thống đóng gói cụ thể để sử dụng + nhận xét theo dõi phiên bản. Lưu ý rằng không cần quan tâm đến khả năng tương thích của cơ sở dữ liệu với phiên bản trước của ứng dụng, bạn nên thực hiện trang web/dịch vụ ngoại tuyến trong suốt quá trình xuất bản và khôi phục tất cả trong trường hợp lỗi. – eglasius

+1

@Antoine Claval, cảm ơn bạn rất nhiều vì phản hồi của bạn, tôi thấy nó cực kỳ hữu ích. Cảm ơn bạn đã dành thời gian để phác thảo chiến lược triển khai của bạn, tôi nghĩ bạn xứng đáng với các điểm danh tiếng :) –

1

Tôi không nghĩ bạn sẽ tìm thấy cơ chế không an toàn.

Tôi khuyên bạn nên, khi có thể, bạn tính đến khả năng tương thích tài khoản với nguồn được xuất bản hiện tại khi thực hiện thay đổi lược đồ/dữ liệu. Bằng cách này bạn có thể thực hiện một công cụ đơn giản chạy các tập lệnh cơ sở dữ liệu cam kết với một vị trí cụ thể svn (bạn không muốn thay đổi cơ sở dữ liệu, như thể bạn cần sửa đổi thêm bạn cần các câu lệnh khác nhau).

Khi thực hiện ở trên, bạn có thể có một lệnh đơn giản chạy các thay đổi cơ sở dữ liệu, sau đó thay đổi mã nguồn & nhị phân.

Đối với cơ sở dữ liệu cũng có tùy chọn lược đồ & công cụ so sánh dữ liệu, có thể được sử dụng để so sánh môi trường & đảm bảo không có bất kỳ điều gì bất ngờ bị thiếu trong tập lệnh thay đổi - cũng có thể tạo tập lệnh thay đổi. nói rằng bạn thực sự muốn chắc chắn rằng nó sẽ không phá vỡ nguồn hiện tại.

0

Bạn có thể tạo một công cụ để thực hiện di chuyển không đau đớn - một cái gì đó tương tự như Patch Patch Assistant của Peoplesoft.

Về cơ bản, đây là bản thực thi độc lập có nội dung là "Bản nâng cấp" và thực hiện các tác vụ. Mẫu nâng cấp mô tả các nhiệm vụ nâng cấp hoặc "các bước". Các bước có thể là - sao chép (để sao lưu hoặc di chuyển các đối tượng biên dịch sẵn như các lớp và các nhị phân othar), cơ sở dữ liệu (để thay đổi các phần tử lược đồ), SQL Scripts (để tải hoặc chuyển đổi dữ liệu hiện tại). Các bước sẽ có một số logic vị ngữ có khả năng - nếu đó là điều này, hãy làm điều này, bỏ qua nó và chuyển đến tiếp theo, v.v.

Mẫu thường là tệp XML. Nó cũng cung cấp các bước thủ công với hướng dẫn cho các thao tác thủ công. Mỗi bước cũng xác định nếu nó có thể phục hồi hay không. Nó cũng sẽ xác nhận nếu bước đã thành công hay không.

Có thể có dự án nguồn mở xung quanh yêu cầu này khá phổ biến.

+0

@ srini.venigalla, câu trả lời của bạn cho đến nay là gần nhất với những gì tôi đang tìm kiếm.Tôi muốn biết nếu một công cụ như thế này đã tồn tại, nguồn mở hay chưa. Tôi nghĩ rằng có một nhu cầu cho công cụ nguồn mở như vậy. Tôi đã suy nghĩ về cách cơ sở dữ liệu Schema và dữ liệu nội dung khác nhau có thể được tạo ra để được sử dụng với một công cụ như vậy. Bạn có ý kiến ​​gì về chủ đề này không? –

+1

@ srini.venigalla bạn mô tả hệ thống đóng gói debian :). Mẫu nâng cấp là một tệp rules.xml nơi bạn nói phải làm gì trong mỗi trường hợp (cài đặt, cập nhật, gỡ cài đặt ...) –

+0

Hmm .. Tôi gần như là một anh chàng Windows. Chỉ cần chuyển sang Mac. Lộn xộn xung quanh một chút với các cổng Ubuntu và Mac nhưng không nhiều với Debian. Sẽ tốt hơn nếu tạo hệ thống con này của Debian như một gói chung! Tôi đã bị cám dỗ để xây dựng một công cụ như thế này nhiều lần nhưng không bao giờ nghe gọi cao hơn :-) –

0

Bạn cần lưu các đối tượng git commit vào tệp cục bộ và sau đó nhập chúng vào repo/nhánh khác.