Tôi cần đưa trang web vào kiểm soát phiên bản và thiết lập môi trường Tích hợp liên tục


41

Tôi là một doanh nhân với dự án Drupal 6x bắt đầu đủ nhỏ để không cần kiểm soát phiên bản (cho mỗi nhà phát triển), nhưng bây giờ tôi tin chắc rằng không có cách nào mà không có nó. Có tài liệu phong phú về JIRA, hoàn chỉnh với Câu chuyện người dùng được viết tốt bao gồm mọi thứ. Tôi đã đọc lên một chút về cách điều này có thể được thực hiện và đưa ra kế hoạch sau đây -

  1. Tách mã trang web khỏi cơ sở dữ liệu bằng các mô-đun
    1. Bối cảnh
    2. Đặc trưng
    3. Mạnh mẽ
    4. Hồ sơ
  2. Đặt mã vào kho SVN và tạo trang dàn dựng
  3. Tạo một bản sao của máy chủ dàn trên máy chủ sản xuất EC2
  4. Tạo các thử nghiệm Selen và chạy chúng trên đám mây bằng Saucelabs
  5. Tạo quy trình xây dựng trong JIRA Studio bằng cách sử dụng Đàn hồi tre để chạy cập nhật tự động
  6. Cập nhật và cài đặt hồ sơ bằng Drush Make
  7. Chạy cập nhật trên máy chủ sản xuất (tôi không biết làm thế nào)

Để bắt đầu, tôi đã lập một danh sách khoảng 50 "Tính năng", mỗi tính năng có các thành phần (chế độ xem, loại nội dung, mô-đun, v.v.). Điều này chắc chắn sẽ là thách thức vì trang web chứa khoảng một tá mô-đun và dịch vụ web tùy chỉnh, chưa kể đến hàng tá trường hợp "ứng dụng" loại nội dung khác chứa mã tùy chỉnh (hầu hết tôi muốn chuyển đổi sang chế độ xem hoặc mô-đun có thể nâng cấp) . Điều tốt là trang web chưa được sản xuất nên rủi ro vẫn còn hạn chế.

Có ai có bất kỳ kinh nghiệm trong việc làm một cái gì đó tương tự? Những cạm bẫy và hạn chế nào tôi nên gặp phải? Tôi sẽ đánh giá rất cao bất kỳ đề xuất nào để cải thiện / sửa chữa kế hoạch trên, hoặc bất kỳ hiểu biết hoặc lời khuyên nào mà các chuyên gia ngoài kia có thể có cho tôi.


Đó là một câu hỏi rất thú vị. Đó là điều tôi nghĩ đến khi thực hiện trên trang web của mình, nhưng đã từ bỏ vì nó có vẻ không hiệu quả. Nếu bạn trải qua với nó, xin vui lòng cho chúng tôi đầu vào của bạn.
Tivie

3
Chắc chắn là một câu hỏi thú vị, nhưng cũng khó trả lời. Bạn đang hỏi nhiều câu hỏi, vì vậy thật khó để đưa ra câu trả lời đầy đủ / tốt nhất. Chỉ cần một gợi ý: IMHO, không có dự án nào quá nhỏ để kiểm soát phiên bản. Đặc biệt là bây giờ với các VCS phân tán như git, phải mất 5 giây để đưa mã của bạn vào một kho lưu trữ cục bộ. Xem thêm drupal.stackexchange.com/questions/316/iêu
Berdir

Nhìn lại, thực sự không có dự án nào quá nhỏ để kiểm soát phiên bản (nếu tôi chỉ biết sau đó). Tôi đã đi qua liên kết đó và nó đưa ra một câu hỏi quan trọng khác. Nếu chúng ta muốn rút lõi Drupal từ kho git của riêng mình, chúng ta có nên sử dụng git cho các dự án Drupal thay vì SVN không? Lý do chúng tôi sử dụng SVN là vì có hỗ trợ riêng cho nó trong JIRA Studio, điều quan trọng đối với chúng tôi là chúng tôi muốn sử dụng các tính năng xây dựng tự động của JIRA (Đàn hồi tre). Xin lỗi vì nhiều câu hỏi :-(
druflex

CẬP NHẬT: Sau khi xem xét mã, đã xác định rằng có nhiều mã tùy chỉnh trong dự án, điều này sẽ thực sự khó xuất khẩu bằng các tính năng. Vì vậy, các tùy chọn trước mặt chúng tôi là - (1) Hoàn tất và phát hành, và bắt đầu phát triển song song trong D7 bằng cách sử dụng kiểm soát phiên bản phù hợp. Điều này có nghĩa là làm xáo trộn cơ sở dữ liệu sau này. Đáng sợ. (2) Làm lại các tính năng cần thiết trong D6, phát hành, sau đó thực hiện Tích hợp liên tục. (3) Làm lại các tính năng cần thiết trong D7, phát hành, sau đó thực hiện Tích hợp liên tục. Câu hỏi chính là mỗi tùy chọn này sẽ mất bao nhiêu thời gian. Nếu bạn là tôi, bạn sẽ bình chọn cho cái gì?
druflex

Câu trả lời:


23

Ok, tôi sẽ thử cái này :) Tôi sẽ không thể trả lời đầy đủ câu hỏi của bạn, nhưng có thể cho bạn một vài gợi ý thú vị. Lưu ý rằng việc đánh số của tôi không đáp ứng trực tiếp với bạn :)

  1. Như tôi đã đề cập trong bình luận, không có dự án nào quá nhỏ để kiểm soát phiên bản. Cá nhân tôi khuyên bạn nên Git. Lý do là tốc độ tuyệt vời của nó (thời gian chờ trong git được đo bằng mili giây, không phải giây) và số lượng tính năng khổng lồ. Có thể hơi khó để chọn, vì tên và lập luận kỳ lạ nhưng tài liệu sau đây giải thích nhiều trong số chúng thực sự tốt: http://www.eecs.harvard.edu/~cduan/technical/git/ . Một lý do khác là hiện tại nó được drupal.org sử dụng, vì vậy việc biết git sẽ giúp bạn khi bạn muốn đóng góp lại (cung cấp các bản vá, bản vá thử nghiệm, mô-đun phát hành, ...)

  2. Điều đó nói rằng, nếu bạn muốn sử dụng SVN vì một số lý do (như tích hợp với các dịch vụ bạn dự định sử dụng), thì hãy sử dụng nó. SVN cũng hoạt động hợp lý và tốt hơn nhiều so với việc không kiểm soát nguồn. (Trừ khi bạn hỏi Linus Torvalds ..). Ngoài ra, thường có nhiều cách để di chuyển từ một VCS này sang một VCS khác nếu bạn đổi ý. SVN -> Git hoạt động tốt, ví dụ.

  3. Thứ ba, tiếp cận từng bước này. Đừng cố gắng làm mọi thứ cùng một lúc. Cung cấp cho bạn (và nhà phát triển của bạn) thời gian để tìm hiểu các công cụ mới.

  4. Chuyển từ Drupal 6 sang Drupal 7 không phải là chuyện nhỏ. Đặc biệt với rất nhiều mã tùy chỉnh. Lưu ý rằng chỉ có hàng tấn thay đổi API và các khái niệm mới (như hệ thống thực thể / trường), đó cũng là điểm mà nhiều mô-đun đóng góp chưa hoàn toàn sẵn sàng.

  5. Quản lý triển khai một trong những điểm yếu của Drupal, cũng không thay đổi nhiều ở Drupal 7. Chúng tôi nhận thức được vấn đề và mọi người đang nỗ lực để giải quyết vấn đề này cho Drupal 8: http://groups.drupal.org / xây dựng hệ thống-thay đổi-quản lý / cmi . Các tính năng, vv giúp, nhưng nó không phải là một viên đạn bạc. Không phải tất cả mọi thứ có thể được xuất khẩu như là một tính năng.

  6. Ngoài ra còn có một vài tùy chọn Drupal-specifc để triển khai các trang web dàn / sản xuất. Pantheon (vẫn đang trong giai đoạn thử nghiệm) và Acquia Dev Cloud có thể đáng để kiểm tra.

  7. Tích hợp liên tục, kiểm tra tự động là quan trọng và thực sự hữu ích nhưng cũng cần thời gian để thiết lập, viết các bài kiểm tra, v.v. Thời gian bạn có thể hoặc có thể không có tại thời điểm này. Nhưng đặc biệt là kiểm tra tự động là một lĩnh vực nơi dễ dàng thực hiện các cải tiến gia tăng. Khi bạn có một môi trường được thiết lập để chạy chúng, bạn có thể viết nhiều bài kiểm tra hơn khi thời gian cho phép.

Vì vậy, đây là khuyến nghị của tôi cho câu hỏi cập nhật trong bình luận:

Kết thúc và phát hành như hiện tại, nhưng bắt đầu sử dụng VCS (hệ thống kiểm soát phiên bản) cho Drupal 6 ngay bây giờ. Tạo một môi trường dàn dựng cho trang web của bạn. Nhìn vào những mô-đun (đã đóng góp) bạn đang sử dụng và kiểm tra xem một cổng tới Drupal 7 có khả thi tại thời điểm đó không. Đừng đánh giá thấp thời gian sẽ mất. Cũng bắt đầu cải thiện quá trình thử nghiệm / triển khai, bắt đầu với những gì bạn nghĩ sẽ mang lại cho bạn nhiều lợi ích / chi phí nhất.

Bạn cũng có thể tạo các câu hỏi tiếp theo cụ thể hơn hoặc xem những câu hỏi đã tồn tại. Như bạn có thể thấy, thậm chí chỉ đưa ra một vài gợi ý cho một câu hỏi như thế này có thể trở nên rất lớn và mất khá nhiều thời gian.


Cảm ơn bạn rất nhiều cho một câu trả lời toàn diện tuyệt vời như vậy. Tôi quyết định khá nhiều về chính xác những gì bạn đề nghị. Thậm chí bao gồm cả Git thực sự. Tôi sẽ chuyển JIRA từ máy chủ lưu trữ sang độc lập để tôi có thể sử dụng plugin Git. Vậy là D6. Phát hành phiên bản hiện tại ngay bây giờ và bắt đầu tạo lại một bản sao thực hành tốt nhất phù hợp song song, sử dụng càng nhiều mã hiện có càng tốt. Cảm ơn một lần nữa cho sự hỗ trợ. Chúc mừng!
druflex

+1 Lời khuyên tốt, toàn diện, dạo phố thực tế và thực tế. Bạn đang nói từ kinh nghiệm. Cảm ơn.
trị liệu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.