7

chu kỳ phát triển/phát hành của chúng tôi làm việc như thế này:Làm cách nào để TeamCity tự động hợp nhất chi nhánh tính năng Git với chủ và không xây dựng trong trường hợp xung đột hợp nhất?

  1. phát triển tạo ra một chi nhánh tính năng, thực hiện một tính năng
  2. Nhà phát triển chỉ ra tính năng đã sẵn sàng để chấp nhận thử nghiệm (UAT)
  3. Tester triển khai chi nhánh tính năng và chấp nhận (hoặc từ chối) tính năng

Các tính năng được chấp nhận sau đó được sáp nhập vào chi nhánh chính bởi người kiểm tra và do đó sẽ được phát hành trong lần tiếp theo chu kỳ dễ dàng (chúng tôi triển khai mã trunk/master hàng tuần).

Chúng tôi đang gặp khó khăn với xung đột hợp nhất, bởi vì thời gian người kiểm tra đã làm nổi bật tính năng và phát hiện ra rằng nó sẽ không hợp nhất một cách rõ ràng, nhà phát triển làm việc trong đó thường chuyển sang một thứ khác. Chúng tôi đang xem xét giải pháp theo đó mỗi nhánh tính năng được tự động hợp nhất, bởi TeamCity, chống lại nhánh chính hiện tại và bất kỳ kết quả nào tạo ra xung đột hợp nhất được coi là không thành công - điều này sẽ cho chúng ta khả năng hiển thị sớm về sự hợp nhất có vấn đề để chúng tôi có thể sửa chúng sớm hơn.

TeamCity dường như không hỗ trợ sẵn cho luồng công việc này (tức là khi một lần push xảy ra với chi nhánh X, thanh toán chính, hợp nhất chi nhánh X vào nó, xây dựng, thử nghiệm đơn vị, tạo gói). Có ai đã tạo ra một quy trình làm việc tương tự bằng cách sử dụng TeamCity và Github - bằng cách sử dụng các mục tiêu msbuild tùy chỉnh, có lẽ?

EDIT: Tôi nên làm rõ rằng chúng tôi đang sử dụng Github nhưng hiện tại chúng tôi không sử dụng yêu cầu kéo - có vẻ như đây là điều tôi nên điều tra. :)

+1

Câu hỏi tuyệt vời Dylan, tôi đang tìm cách tự giải quyết vấn đề tương tự. Khi bạn đề cập đến GitHub trong câu cuối cùng, bạn có nghĩa là Git thay thế không? Vì GitHub đã triển khai tính năng này. Tôi đã tận dụng nó trong các dự án nguồn mở. –

Trả lời

2

Nếu bạn đang sử dụng Github và Kéo Các yêu cầu sau đó kiểm tra bài viết trên blog Hadi Hariri về làm thế nào để nhận được yêu cầu kéo sau khi nó đã được sáp nhập với tổng thể:

http://hadihariri.com/2013/02/06/automatically-building-pull-requests-from-github-with-teamcity/

Github làm một tự động hợp nhất cho mọi yêu cầu kéo và hợp nhất kết quả là có sẵn (mặc dù khá nhiều không có giấy tờ) như

git fetch origin +refs/pull/298/merge 

nơi yêu cầu kéo id là 298. và vì vậy tất cả các yêu cầu kéo sáp nhập có thể được lấy với một ký tự đại diện tại chỗ o f id trong Teamcity và được xây dựng tự động. Chi tiết kỹ thuật chi nhánh sẽ trông giống như sau:

+refs/pull/*/merge 

EDIT: Bạn nói bạn không sử dụng yêu cầu kéo vì vậy tôi đoán bạn có thể làm điều này với một số lệnh git. Tôi đã không cố gắng này ra bản thân mình vì vậy đây chỉ là một vài lời khuyên để giúp bạn bắt đầu.

  1. Sử dụng branch specification feature trong Teamcity để lấy chi nhánh. Đặt số checkout mode để kiểm tra mã trên tác nhân
  2. Trong bước xây dựng, hãy hợp nhất nhánh chính vào nhánh mục tiêu. Nếu master không có sẵn trên agent bạn có thể phải lấy nó trước. Nếu bạn gặp bất kỳ lỗi nào, thì quá trình xây dựng sẽ không thành công.

Để kiểm tra xung đột hợp nhất, một trong số strategies này sẽ hoạt động.

+0

@ Dylan-Beattie Bạn sẽ sử dụng Pull Requests trong Github hay bạn đang nghĩ đến việc thực hiện dòng chảy của riêng bạn trong Teamcity? –

+0

Tính năng yêu cầu kéo Github gần như chính xác những gì chúng tôi đang tìm kiếm - chúng tôi đang trong quá trình di chuyển từ Subversion và không hoàn toàn lên đến tốc độ với tất cả chuông và còi Github chưa :) –

+0

@DanielLee Tôi không thấy xây dựng tùy chọn bước cho phép bạn hợp nhất chính vào một nhánh cụ thể. Làm thế nào để bạn làm điều này? –

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