Làm việc dưới sự kiểm soát phiên bản (git)


7

Tôi phải làm việc với một số người khác để phát triển một trang web bằng Joomla. Chúng tôi sẽ tạo mẫu cá nhân của mình và chúng tôi sẽ cài đặt và có thể sửa đổi một số tiện ích mở rộng hoặc plugin. Chúng tôi sẽ làm việc ở các thành phố khác nhau, chủ yếu tương tác qua web và chúng tôi sẽ làm việc tại địa phương có một kho lưu trữ trung tâm nơi lưu các tác phẩm của chúng tôi.

Chúng tôi đang suy nghĩ về chiến lược tốt nhất để giữ quy trình làm việc của chúng tôi dưới sự kiểm soát phiên bản là gì. Chúng tôi đang nghĩ đến việc sử dụng git nhưng sau đó một số câu hỏi phát sinh:

  1. Chúng ta có nên theo dõi toàn bộ thư mục Joomla?
  2. Điều gì về việc theo dõi sự thay đổi trong cơ sở dữ liệu?

Câu trả lời:


5

Tôi có thể trả lời dựa trên cách chúng tôi làm việc tại Virya Group - CTO Marco Dings của chúng tôi đã viết những điều này trong một loạt các bài viết: http : //magazine.j Joomla.org/issues/su-apr-2014/item/1842-pratics -Phát triển-3 dự án .

Chúng tôi sử dụng các sản phẩm Atlassian - Jira, Stash, Confluence, v.v.

Chúng tôi thiết lập môi trường làm việc của chúng tôi như một vhost cho mỗi dự án - chúng tôi đang nghiên cứu kịch bản này để nhanh hơn. Vì vậy, mỗi nhà phát triển có "sân chơi" địa phương của riêng họ và chúng tôi đã thiết lập dev.clentsite.com, staging.clentsite.com và sau đó là trang web trực tiếp của họ, clientite.com.

Trong vhost, chúng tôi có một thư mục - vcs - và web root - www.

Chúng tôi sử dụng PHPStorm và chúng tôi cài đặt Joomla vào thư mục www và ánh xạ nó tới gốc web tương ứng trên dev / staging / live bằng các máy chủ từ xa.

Một kho lưu trữ được thiết lập trên dự án cho máy khách, vào kho lưu trữ này, chúng tôi đặt bất kỳ thứ gì thay đổi từ vanilla Joomla và bất kỳ tiện ích mở rộng nào được sửa đổi theo bất kỳ cách nào, hình dạng hoặc hình thức, bao gồm cả các mẫu.

Chúng được liên kết một cách tượng trưng từ thư mục VCS trở lại thư mục www - vì vậy các tệp 'sống' trong kho lưu trữ VCS, nhưng chúng xuất hiện trong thư mục www dưới dạng các tệp được liên kết.

Chúng tôi sử dụng LESS với cơ sở mẫu của chúng tôi và tuân theo cấu trúc BEM mà chúng tôi có trong một kho lưu trữ riêng. Điều này được sao chép xuống cho mỗi dự án và được liên kết sym dưới dạng mẫu mới. Bất kỳ tùy chỉnh dành riêng cho khách hàng nào sau đó là duy nhất cho dự án này, nhưng chúng tôi có thể hợp nhất trong mọi thay đổi trong tương lai cho tất cả các dự án của chúng tôi một cách dễ dàng.

Một số người sẽ kiểm soát phiên bản toàn bộ trang web, nó thực sự phụ thuộc vào những gì bạn muốn đạt được. Chúng tôi quan tâm đến những gì thay đổi và chúng tôi có quyền kiểm soát duy nhất về điều đó. Chúng tôi tạo một tệp khách hàng-custom.css mà khách hàng có thể thay đổi, nhưng mọi thứ khác đều vượt quá giới hạn.

Đối với kiểm soát phiên bản cơ sở dữ liệu, đó là điều chúng tôi đang xem xét. Chúng tôi đã chơi xung quanh với một số tùy chọn nhưng chưa tìm thấy bất cứ điều gì đánh dấu vào tất cả các hộp.

Chúng tôi sử dụng một loạt các tập lệnh để tự động hóa tất cả các mục trên, chúng tôi đang phát triển và điều chỉnh khi chúng tôi đi.

Tôi hy vọng điều đó sẽ giúp!


1

Chúng tôi đã sử dụng một quy trình công việc tương tự như được mô tả ở trên bởi RCheesly. Tôi rất muốn giới thiệu bộ sản phẩm Atlassian cho quản lý dự án. Điều này cho phép chúng tôi buộc các thông điệp cam kết với vé JIRA để lại dấu vết kiểm toán trong bitbucket. Chúng tôi luôn tạo một nhánh tính năng tức là tính năng / j Joomla-update / JIRA-Ticket-no, thực hiện công việc trên nhánh đó và kiểm tra trước khi hợp nhất trở lại để làm chủ và triển khai.

Nếu một tính năng mới chưa sẵn sàng để phát hành, chúng ta có thể hợp nhất nó thành một nhánh phân tầng riêng biệt và triển khai nó để xem trước cho khách hàng, cho phép chúng ta tạo các nhánh sạch từ chủ cho bất kỳ tính năng nào phải hoạt động trong thời gian này. Chìa khóa để thực hiện công việc này là đảm bảo nhóm không bao giờ cam kết trực tiếp với chủ hoặc dàn chi nhánh và tất cả các công việc chưa sẵn sàng vẫn nằm trên nhánh của chính nó trong kho lưu trữ bitbucket.

Chúng tôi giữ toàn bộ cài đặt trong kiểm soát phiên bản, chúng tôi chỉ bỏ qua các thư mục hình ảnh và node_modules. Lý do cho điều này là do quá trình triển khai của chúng tôi, chúng tôi sử dụng một hook trên các máy chủ sản xuất / dàn dựng aws nhận nhánh chính và triển khai tất cả các thay đổi tệp. Điều này cho phép chúng tôi thực hiện cập nhật cục bộ, thử nghiệm và sau đó triển khai.

Môi trường địa phương của chúng tôi sử dụng dockerLaradock , tôi rất muốn giới thiệu. Mặc dù nó hướng đến Laravel, nhưng nó cung cấp một môi trường tuyệt vời cho bất kỳ trang web dựa trên PHP nào và cho phép bạn bắt chước môi trường sản xuất của mình để bạn có thể tự tin cập nhật.

Thách thức lớn nhất để có được xung quanh với phương pháp này là cơ sở dữ liệu! Ban đầu, chúng tôi sẽ thực hiện cập nhật cục bộ, đẩy và sau đó thực hiện các cập nhật tương tự trên các máy chủ của mình để đảm bảo di chuyển phần mở rộng / lõi được thực hiện trong tất cả các môi trường. Điều này là xa lý tưởng.

Chúng tôi đã bắt đầu sử dụng một công cụ CLI để thực hiện các cập nhật này CLI Helper , giúp quá trình này đáng tin cậy hơn một chút và tăng tốc đáng kể. Điều này là tốt hơn, nhưng không hoàn hảo! Tôi muốn nghe từ bất cứ ai đã tìm thấy một giải pháp cơ sở dữ liệu tốt hơn!

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.