2017-12-10 132 views
5

Học GitFlow và tôi có một số lo ngại mà tôi không thấy được giải quyết trong bất kỳ tài liệu/bài viết nào tôi đã đọc về nó.GitFlow: hợp nhất để làm chủ trước hoặc sau khi phát hành sản phẩm?

Tại một số mã điểm trên chi nhánh develop cần được triển khai cho môi trường QA/dàn dựng và được kiểm tra một cách nghiêm ngặt. Vì vậy, với GitFlow bạn cắt một chi nhánh release tắt của develop, và sau đó bạn triển khai release cho môi trường dàn dựng.

Thứ nhất, chỉ muốn làm rõ một cái gì đó thật nhanh: lần đầu tiên một dự án đặc biệt/repo trải qua quá trình này, bạn sẽ thực sự được forking/tạo release chi nhánh mới này từ develop, ? Và tất cả những lần khác trong tương lai, bạn chỉ cần hợp nhấtdevelop vào release, ?

Vì vậy, sau đó QA kiểm tra chi nhánh release trên phân đoạn env, tất cả đều tốt và chúng tôi sẵn sàng triển khai cho sản phẩm. Bạn có:

  • Triển khai để cây trượng và cây sau đó merge release vào master? ; hoặc
  • Hợp nhất release đến mastersau đó triển khai để sản xuất?

Tôi hỏi vì nó có vẻ như trong trường hợp trước đây bạn sẽ cần để triển khai các release chi nhánh sản, sau đó triển khai đến sản, và sau đó hợp nhất để master. Những âm thanh OK, nhưng thường là các sản phẩm prod và non-prod không giống nhau và mã chạy hoàn toàn tốt trong các cuộn cảm ứng thứ hai, nó sẽ kích hoạt trên các máy chủ prod. Tôi biết GitFlow hỗ trợ các khái niệm về các chi nhánh hotfix hotfix nhưng chúng được dành riêng cho các bản sửa lỗi nhỏ. Trong trường hợp của một sửa chữa phức tạp đòi hỏi một bản phát hành rollback/backout, bây giờ chúng ta có "mã bẩn" (mã phá vỡ prod vì lý do nào đó) sáp nhập vào master. Và trong trường hợp sau, có thể mất hàng giờ hoặc thậm chí vài ngày (đặc biệt nếu bạn cần liên quan đến IT/Ops để thực hiện prod triển khai) từ thời điểm bạn nhập và đưa vào yêu cầu phát hành, vào thời điểm triển khai prod thực sự xảy ra. Và trong thời gian này, bạn có chi nhánh master cho biết "các tính năng X, Y và Z nằm trong sản phẩm" nhưng thực tế là không.

Tôi tự hỏi nếu GitFlow thực sự giải quyết điều này bằng cách nào đó hoặc cách giải quyết đã biết cho cả hai trường hợp.

Trả lời

1

Nhánh phát hành bạn tạo ra là nhánh ngắn, tương tự như các nhánh tính năng mà bạn tạo. Khi bản phát hành kết thúc, bạn xóa chi nhánh. Ví dụ, tôi sẽ tạo ra một chi nhánh release/0.1.0, thực hiện công việc và sau đó hợp nhất.

Khi triển khai sang sản xuất, tôi luôn lấy mã từ nhánh chính, có nghĩa là tôi hợp nhất nhánh phát hành vào nhánh đầu tiên trước khi triển khai.

GitFlow là thêm về di chuyển về phía trước, chứ không phải quay lại. Do đó tại sao hotfix được sử dụng để tạo bản sửa lỗi cho các vấn đề được xác định.

Về thời gian để tham gia Sản xuất, điều đó thực sự không phải là mối quan tâm của GitFlow và tôi không nghĩ rằng nó sẽ cung cấp nhiều trợ giúp trong lĩnh vực này. Đây sẽ là vấn đề cho bạn bất kể bạn sử dụng chiến lược phân nhánh nào.

+0

không chắc chắn này nên được câu trả lời, chúng ta đang thiếu một biện minh, hoặc ưu/chống lại việc sáp nhập trước hoặc sau khi phát hành. – NicolasW

+1

Một lợi thế rất lớn của việc sáp nhập TRƯỚC KHI triển khai là gần như không thể bỏ sót bất kỳ sửa lỗi nào (nếu có) gần đây đã sáp nhập trở lại vào bản chính và kết quả là tạo ra sự cố hồi quy. Vì lý do duy nhất đó, tôi nghĩ đây là cách tiếp cận tốt nhất. – NicolasW

2

Dự án Tôi làm việc trong rất hỗn loạn, quyết định thay đổi chỉ trong vài phút , vì vậy chiến lược của tôi là để trì hoãn càng nhiều càng tốt các quyết định quản lý cấu hình phần mềm càng tốt.

Đặc biệt, sáp nhập vào tổng thể: chúng tôi chỉ hợp nhất để làm chủ sau khi chúng tôi triển khai trong sản xuất và chúng tôi có một sự xác nhận e-mail mà hút thuốc kiểm tra làm việc tốt. Bằng cách này, chúng ta nắm lấy sự hỗn loạn bằng cách quản lý rủi ro thay đổi quyết định, khôi phục trong triển khai, các vấn đề kỹ thuật hoặc bất kỳ vấn đề nào có thể xảy ra. Lúc đầu chúng tôi sáp nhập vào master trước khi đi vào sản xuất, nhưng các vấn đề kỹ thuật, rollback, quyết định quản lý vào phút cuối ... đã gây ra rất nhiều vấn đề cho chúng tôi, vì vậy chúng tôi đã thay đổi chiến lược và hoạt động tốt trong 3 năm qua.

Nếu, cuối cùng, sau khi đi vào sản xuất một số hồi quy được tìm thấy, đó là một hotfix và phải được xử lý như thế :)

+0

Vấn đề với cách tiếp cận này là sau khi hợp nhất để làm chủ và gắn thẻ, thẻ sau hợp nhất về cơ bản trỏ đến một cam kết khác với cam kết mà bạn đã sử dụng để triển khai. Điều này phá vỡ các bản dựng lặp lại. – RaGe

+0

Xin lỗi, tôi không hiểu điểm của bạn. Bạn có thể vui lòng xây dựng? Bạn có ý nghĩa gì với "thẻ kết hợp sau" và mục đích của nó là gì? – Luis

+0

Mỗi gitflow, khi bạn hợp nhất nhánh phát hành vào master, bạn gắn thẻ nó vào nhánh master. [xem tại đây] (https://datasift.github.io/gitflow/GitFlowMasterBranch.png). Trong trường hợp của bạn, triển khai sản xuất của bạn là từ lần commit màu xanh lá cây cuối cùng (trước khi hợp nhất) trong khi thẻ trỏ đến một cam kết cyan khác. Nếu bạn muốn lặp lại triển khai chính xác tương tự đôi khi sau đó, việc triển khai từ thẻ không hoạt động vì bạn đang triển khai từ một cam kết khác. – RaGe

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