2012-08-08 27 views
5

Vì vậy, đây là Subversion, Jenkins, Beanstalk thiết lập:phát hành với nhiều chi nhánh dài sống bằng maven

  • trunk/-> phát triển dòng chính
    • CI xây dựng trên checkin
    • thành công CI build spawns CD xây dựng đẩy đến môi trường "Thử nghiệm" Beanstalk
  • chi nhánh/qa/-> current release candidate
    • CI xây dựng trên checkin
    • thành công CI build spawns build CD đẩy để "QA" Beanstalk môi trường
  • chi nhánh/prod/-> hiện phát hành
    • CI xây dựng trên checkin
    • thành công CI build spawns CD build đẩy vào môi trường "Prod" Beanstalk

Về cơ bản những gì tôi muốn làm là thế này:

  • chu kỳ phát triển bắt đầu từ thân cây (thân cây: 0.1-SNAPSHOT)
  • Khi chu kỳ phát triển hoàn tất chi nhánh để qa và là chu kỳ qa. Cũng bắt đầu chu kỳ phát triển tiếp theo trong thân cây (thân cây 0.2-SNAPSHOT, qa: 0.1-SNAPSHOT)
  • Khi chu trình qa hoàn thành nhánh để sản xuất và thực hiện thả maven. Cũng bắt đầu chu kỳ qa tiếp theo (thân 0.2-SNAPSHOT, qa: 0.2-SNAPSHOT, prod: 0.1)

Ý tưởng là có các nhánh ngắn ở cuối mỗi đầu phát triển và chu trình qa bắt đầu. Khi chu trình qa hoàn thành, nó được đẩy tới môi trường sản xuất.

Tôi muốn bảo toàn các chi nhánh và thực hiện hợp nhất với \ từ các nhánh thay vì xóa và tạo lại. Ý tưởng được rằng bất kỳ sửa chữa được thực hiện trong qa sẽ được sáp nhập lại thân cây intro, và bất kỳ thay đổi được thực hiện trong sản sẽ được sáp nhập trở lại vào qa (và trở lại vào thân cây).

sản phẩm do đó là nhánh "nóng" và đại diện cho trạng thái hiện tại của môi trường sản xuất.

điều này dành cho một nhóm nhỏ các nhà phát triển làm việc trong các lần chạy nước rút kéo dài một tuần.

Câu hỏi:

  1. Làm thế nào để âm thanh thiết lập này?
  2. Tôi có thể làm maven hoạt động chính xác không, hoặc tôi có cần phải viết kịch bản này không?
  3. Bố của bạn là ai? Và anh ta làm gì?

Trả lời

7

Tôi sẽ không đề xuất chi nhánh qa và prod. Đọc các phương pháp hay nhất về lật đổ. Tôi muốn giới thiệu The SVN Book, đặc biệt trong chương 4 về phân nhánh/hợp nhất.

Bạn nên phiên bản mọi bản phát hành ngay cả khi nó là QA (thông qua thẻ). Trunk được sử dụng cho công việc phát triển hiện tại, các thẻ dành cho các phiên bản phát hành (được định nghĩa là "tính năng hoàn chỉnh", không phải môi trường trong đó), và các nhánh dành cho sửa lỗi (trong số những thứ khác).

Mẫu Kịch bản:

Phiên bản 1.0 là trong sản xuất, nhóm của bạn vừa phát hành 2.0 để bảo đảm chất lượng để kiểm tra, và bây giờ đang làm việc trên một phiên bản 3.0. Tại thời điểm này, bạn sẽ có:

  • /trunk (nhà phát triển làm việc trên 3,0)
  • /tags/2.0 (sử dụng cho QA)
  • /tags/1.0 (lịch sử cho những gì có trong sản xuất)

Nếu nhóm QA của bạn phát hiện sự cố trong phiên bản 2.0, bạn sẽ tạo một nhánh của thẻ 2.0. Thực hiện sửa lỗi của bạn, hợp nhất vào thân cây rồi nhả nhánh thành 2.0.1 (một thẻ khác). Sau đó bạn sẽ được trái với:.

  • /trunk (nhà phát triển làm việc trên 3.0, + sửa chữa khiếm khuyết 2.0)
  • /branches/2.0.* (sử dụng * nhân vật để chỉ ra đây là nơi mà tất cả 2,0 * Bạn có thể sử dụng lại cùng chi nhánh này nếu một lỗi khác được tìm thấy trong mã 2.0)
  • /tags/2.0 (thẻ gốc QA đã được thử nghiệm với lỗi)
  • /tags/2.0.1 (2.0 cơ sở mã, CHỈ với sửa lỗi)
  • /tags/1.0 (lịch sử cho những gì đang được sản xuất)
+0

Cảm ơn, có ý nghĩa. –

1

Tôi đã thực hiện một số công việc tương tự xung quanh phân nhánh và phát hành trước đó, và theo kinh nghiệm của tôi, thiết lập bạn đã mô tả đã trở nên rất khó sử dụng và quan liêu trước quá lâu.

Câu trả lời của Domenic D. khá gần với loại thiết lập tôi muốn, đặc biệt với một số lượng nhỏ các nhà phát triển. Bạn càng có nhiều chi nhánh, việc quản lý cơ sở mã càng phức tạp và càng nhiều có khả năng bạn sẽ giới thiệu lỗi thông qua các phương pháp hợp nhất xấu.

Một điều bạn không đề cập đến đó là quan trọng, theo ý kiến ​​của tôi, để có được ngay từ đầu là chính sách đăng ký của bạn. SCM không phải là bản sao lưu cho công việc không hoàn chỉnh, bạn nên cố gắng đảm bảo rằng các dòng chính ít nhất là luôn luôn xây dựng. Hãy nghiêm túc về điều này, nó sẽ làm cho cuộc sống của mọi người dễ dàng hơn vào cuối.

Điều chính là mặc dù, không có vấn đề gì các thủ tục phát hành bạn đưa ra, hãy chắc chắn bạn nhận được mua từ nhóm của bạn và rằng họ không phải "buộc" vào vị trí. Đó là một dấu hiệu cho thấy có thể có điều gì đó sai trái với những gì bạn đã nghĩ ra là không đúng và có lẽ sẽ nhanh chóng bị bỏ qua hoặc bị lật đổ.

+0

Tôi đồng ý với điều đó. SCM không phải là bản sao lưu. Cam kết thường xuyên và không có lỗi biên dịch. –

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