2010-07-20 25 views
16

Khi tôi bắt đầu xây dựng một máy chủ tích hợp liên tục, tôi chạy qua câu lệnh "Rất tiếc để phá vỡ bản dựng [của mã]." Sau khi hoàn thành dự án đó, tôi đã đi đến kết luận rằngBreaking the Build, Tại sao nó là một điều xấu?

  1. "Phá vỡ bản dựng". là một cụm từ hấp dẫn đã được ném xung quanh rất nhiều vì sự lặp lại, hoặc
  2. Tôi không hiểu một yếu tố chính của Tích hợp liên tục.

Vì vậy, câu hỏi của tôi là theo tinh thần của # 2: tại sao phá vỡ xây dựng một điều xấu?

+0

thường phá vỡ bất cứ điều gì xấu, khác với 'phá vỡ vào kinh doanh', vv .. – kenny

+8

Nếu bạn "phá vỡ xây dựng", bạn không còn có một hệ thống hoạt động, đó là loại điểm tích hợp liên tục. Làm thế nào có thể * không * xấu? – MJB

Trả lời

19

Bởi vì nếu người khác kiểm tra các thay đổi bị hỏng của bạn, họ sẽ không thể làm việc, hoặc nếu họ làm như vậy sẽ làm như vậy ít hiệu quả hơn.

Điều này cũng có nghĩa là bạn không kiểm tra đúng các thay đổi của mình trước khi bạn cam kết, đó là chìa khóa trong CI.

+0

Vì vậy, bằng cách phá vỡ bạn có nghĩa là có mã không biên dịch được cam kết với kho lưu trữ nguồn? – Achilles

+1

Phải. "Breaking the build" đề cập đến, thường là, để commit code bạn chưa test và sau đó sẽ không biên dịch (hoặc thất bại một cách ngoạn mục) và ngăn các đồng nghiệp của bạn ... bạn biết đấy, làm việc :) – rfunduk

+0

Đó là ứng dụng đơn giản nhất. Trong ứng dụng cực đoan nhất, nó sẽ là bất kỳ thay đổi nào giới thiệu một lỗi. Tôi sẽ nói hai cách sử dụng phổ biến nhất là 1 - khiến cho nó không biên dịch, hoặc 2 - gây ra một lỗi nghiêm trọng ngăn cản công việc của người khác. Rõ ràng là bạn sẽ không thể luôn phạm lỗi (nếu bạn có thể!) Nhưng bạn cần đảm bảo rằng các thay đổi của bạn không bằng cách nào đó giữ cho các menu xuất hiện, gây ra nhiều thông báo lỗi xuất hiện, và chắc chắn không gây ra lỗi biên dịch. (Hầu hết các lỗi biên dịch trong checkins là khi bạn quên một trong các tập tin để kiểm tra, btw.) – corsiKa

0

Bởi vì điều đó có nghĩa là ai đó đã làm điều gì đó xấu (hoặc ít nhất, một số thay đổi đã bị xung đột) và bạn không còn có thể xây dựng và triển khai hệ thống của mình nữa.

4

Bạn phá vỡ công trình xây dựng như đã gặp tôi hôm qua. Khi các đồng đội của bạn thử và sử dụng mã nguồn. Nó sẽ không xây dựng. Vì vậy, họ sẽ đấu tranh để kiểm tra công việc mà họ đang làm. Nó càng tệ hơn đội của bạn.

1

Khi xây dựng bắt đầu phá vỡ, mọi người sẽ miễn cưỡng để có được những thay đổi mới nhất, và bạn bắt đầu xoắn ốc chết người đối với việc tích hợp các thay đổi của Big Bang.

0

Phá vỡ công trình có nghĩa là bạn đã cam kết mã vào một kho lưu trữ được chia sẻ (a) không biên dịch hoặc (b) không hoạt động (kiểm tra đơn vị không thành công). Bất kỳ ai khác đang phát triển từ kho lưu trữ được chia sẻ đó sẽ phải xử lý mã bị hỏng mà bạn đã cam kết cho đến khi được sửa. Điều đó sẽ gây mất năng suất cho toàn đội.

11

Từ Martin Fowler http://martinfowler.com/articles/continuousIntegration.html

Toàn bộ vấn đề làm việc với CI là rằng bạn luôn phát triển trên một nền tảng vững chắc biết. Nó không phải là một điều xấu cho việc xây dựng đường chính để phá vỡ, mặc dù nếu nó xảy ra tất cả các thời gian nó cho thấy mọi người không phải là cẩn thận đủ về việc cập nhật và xây dựng tại địa phương trước khi cam kết. Tuy nhiên, khi việc xây dựng đường chính bị hỏng, , điều quan trọng là nó bị cố định nhanh.

+3

+1 cho Martin Fowler – corsiKa

1

Breaking xây dựng có ý nghĩa nghiêm trọng cho tiến độ dự án (và huyết áp của đồng đội) => các nhà phát triển khác, người sau đó nhận được phiên bản mới nhất không còn có thể xây dựng có những thay đổi riêng, trì hoãn chúng => Continuous Việc tích hợp sẽ bị gián đoạn, có nghĩa là việc kiểm tra chính thức có thể bị trì hoãn

Nhiều công cụ kiểm soát phiên bản (ví dụ TFS) có thể ngăn các nhà phát triển kiểm tra mã không biên dịch hoặc vượt qua các bài kiểm tra phân tích đơn vị hoặc mã.

1

Tôi không nghĩ rằng việc phá vỡ công trình xây dựng nhất thiết phải là một điều xấu, miễn là có một nhánh hoặc thẻ làm việc nổi tiếng trong kho lưu trữ.Điều đó nói rằng, làm cho chi nhánh của riêng bạn trong kho lưu trữ nếu bạn biết mã của bạn sẽ phá vỡ xây dựng ngày hôm nay, nhưng bạn sẽ sửa chữa nó vào tuần tới. Sau đó, bạn có thể hợp nhất trở lại vào thân cây.

+2

Bạn hầu như đúng, ngoại trừ việc bạn đang tạo chi nhánh của riêng mình, đó không phải là tích hợp liên tục phải không? – corsiKa

19

Hãy cẩn thận trong việc ghi nhãn "Phá vỡ bản dựng" là một điều xấu. Đó là điều cần chú ý ngay lập tức, nhưng nó cũng là một phần rất bình thường và kỳ vọng của chu kỳ phát triển. Đây là lý do tại sao tích hợp liên tục là rất hữu ích - nó cho bạn biết ngay lập tức khi xây dựng bị hỏng, và những gì thay đổi thiết lập gây ra nó. Nó giúp bạn quay trở lại đúng hướng.

Nếu văn hóa của bạn phạt "Phá vỡ xây dựng", thì bạn có nguy cơ nuôi dưỡng một môi trường làm việc độc hại. Một lần nữa, hãy xem xét nó là một cái gì đó mà cần sự chú ý ngay lập tức, nhưng không nhãn nó là "xấu".

+0

Rất vui vì bạn đã nói điều đó. Nhận xét của tôi chắc chắn ngụ ý rằng đó là một "điều xấu nói chung", trái ngược với một "điều xấu bạn nên cố gắng giải quyết khi nó xảy ra." – MJB

5

Bởi vì nếu người khác kiểm tra các thay đổi, họ won't có thể làm việc ... alt text hình ảnh này được bản quyền để Geek & Poke dưới một Creative Commons License

2

Chắc chắn toàn bộ các điểm tích hợp liên tục là xác định sớm vấn đề. Cần kiểm tra hàng ngày hoặc thường xuyên hơn để giảm xung đột với kích thước có thể quản lý.

Bạn sẽ nhận được bản sao cập nhật của kho lưu trữ và xây dựng cục bộ. Điều này sẽ cho bạn biết nếu yêu cầu của bạn đăng ký sẽ phá vỡ xây dựng. Bạn giải quyết mọi vấn đề và sau đó đăng ký.

Bằng cách này, các vấn đề tích hợp được lưu giữ cục bộ và dễ sửa.

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