Làm thế nào quan trọng là xây dựng hàng ngày? [đóng cửa]


20

Một trong những tiêu chí của Joel Test là các bản dựng hàng ngày. Ý tưởng là nếu bản dựng bị hỏng, bất cứ ai phá vỡ nó đều ở xung quanh để sửa nó. Nếu bản dựng không thể sửa được, mọi người sẽ phải kiểm tra phiên bản cũ và làm việc với nó. Tôi có thể hiểu làm thế nào điều này có thể khá tệ trong điều khiển phiên bản tập trung, điều quan trọng là tránh sáp nhập và phân nhánh càng nhiều càng tốt, nhưng điều này chỉ nghe có vẻ phiền toái đối với kiểm soát phiên bản phân tán. Bạn có đồng ý với điều này? Có những lý do khác tại sao xây dựng hàng ngày là quan trọng?


2
Joel nên cập nhật nó thành "Bản dựng hàng ngày và các bài kiểm tra tự động"
Paul

1
Hoặc tốt hơn là "tích hợp liên tục với các bài kiểm tra tự động" - đôi khi chúng tôi không xây dựng vào một ngày, đôi khi chúng tôi xây dựng hàng chục lần một ngày. Một khi máy móc đang làm điều đó không thành vấn đề.
Wyatt Barnett

@WyattBarnett Tôi hoàn toàn đồng ý =) Tôi đã làm việc với một dự án khởi động xây dựng mã cứ sau 15 phút (trừ khi hoạt động kiểm tra đang diễn ra) và nó thật tuyệt vời.
Patrick Hughes

Câu trả lời:


19

Tôi nghĩ điều quan trọng cần lưu ý ở đây là các bản dựng thông thường giúp bắt lỗi sớm hơn là muộn hơn . Nó không phải là hàng ngày, nhưng thường đủ. Lý tưởng nhất, nó cũng có thể chạy thử nghiệm đơn vị của bạn.

Mục tiêu là tìm ra khi nào bản dựng bị phá vỡ trước giai đoạn thử nghiệm cuối cùng, để tìm ra chúng càng sớm càng tốt.

Chỉ cần thiết lập nó để xây dựng (các) nhánh phát triển chính của bạn.

Chúng tôi sử dụng nó tại nơi làm việc (mặc dù chúng tôi xây dựng hàng giờ) và thường khi chúng tôi quên thiết lập nó, chúng tôi tìm thấy các vấn đề chỉ vài giờ trước khi phát hành.


2
Xây dựng và kiểm tra hàng ngày.
Paul

1
@Paul: Chỉ khi bạn không thể làm điều đó thường xuyên hơn. Làm như vậy trên mỗi cam kết (tốt, với một số thời gian trễ) là tốt.
Donal Fellows

4

Cần thêm một chút vào điều này (và @oodEnoughs):

nhưng điều này chỉ nghe có vẻ phiền toái đối với kiểm soát phiên bản phân tán.

Nói một cách rõ ràng là không - những gì một bản dựng "máy chủ" nói với bạn rằng thân cây của bạn sẽ xây dựng và vượt qua các thử nghiệm của nó ít nhiều từ sạch (số lượng cấu hình bạn cần làm trong môi trường của bạn).

Tôi đang dự tính chuyển sang DVCS nhưng thậm chí đã hoàn thành nên bạn sẽ kéo sự tích hợp liên tục của tôi từ bàn tay chết lạnh của tôi.

Lấy một ví dụ đơn giản - bạn đang phát triển tính năng "một" tính năng đang phát triển "b" được phân phối hay không tại một số điểm bạn cần kết hợp tất cả lại với nhau - nếu, khi bạn cam kết, bạn quên thêm một tệp mà ứng dụng sẽ xây dựng trên máy của bạn nhưng nó sẽ không ở đâu khác. Vì vậy, khi bạn đẩy bản dựng lên "thân cây", Tích hợp liên tục sẽ kích hoạt và bản dựng sẽ thất bại và bạn sẽ biết và hy vọng trước khi bất kỳ ai rút mã không hoàn chỉnh của mình, bạn sẽ có thể thực hiện các bước.

Nếu bạn đang làm việc trong một dự án có nhiều nhà phát triển, bạn có thể xác định được các phiên bản phát hành đến từ đâu - thân cây có hiệu lực - điều này đúng bất kể cách điều khiển phiên bản của bạn hoạt động.

Nếu bạn đã thêm một tính năng - đặc biệt là một tính năng mà người khác có sự phụ thuộc - để có thể tự tin rằng khi nó được đẩy đến "sống" thì nó sẽ xây dựng và vượt qua các bài kiểm tra ở đâu đó ngoài môi trường dev của bạn là rất lớn. Hơn thế nữa, tôi triển khai từ các bản dựng từ máy chủ bản dựng của mình - đó là cách người ta chỉ định bản dựng "dứt khoát". Cuối cùng, tôi sẽ có người dùng kích hoạt các bản dựng triển khai. Không có gì tốt khi bạn có thể làm việc quanh nó - bạn không thể nếu bạn cần nó (và tôi đã xáo trộn các hộp tròn trong văn phòng để tìm và cam kết các tệp bị thiếu).

Có phải đó là một chút mạnh mẽ? Không biết - nhưng máy chủ xây dựng của tôi là một trong những thứ mà tôi có không muốn trả lại.


3

Xây dựng hàng ngày tôi tin là rất quan trọng. Nếu bạn có một nhóm phân phối ở các múi giờ khác nhau thì tốt nhất nên tìm thời gian gần như là 'cuối ngày' cho hầu hết các nhóm. Ngoài ra, nếu các bản dựng hàng ngày có một thành phần kiểm tra tự động thì nó là mong muốn hơn.

Trong thời của các hệ thống kiểm soát nguồn trung tâm, tôi sẽ ủng hộ các bản dựng liên tục chạy cứ sau 5-10 phút khi có bất kỳ thay đổi nào trong mã nguồn. Vì một lỗi biên dịch có khả năng làm chậm hầu hết các nhóm. Đối với các tổ chức chạy các hệ thống kiểm soát nguồn phân tán, việc xây dựng liên tục có thể không cần thiết vì các nhà phát triển chạm trực tiếp vào cơ sở mã 'nguyên sơ'.


1

Lý tưởng nhất, trừ khi bạn xây dựng một cái gì đó khổng lồ mất hơn nửa ngày để xây dựng, bạn sẽ xây dựng nhiều hơn một lần một ngày. Khi bạn đã thiết lập máy chủ tích hợp liên tục, chẳng hạn như Hudson hoặc TeamCity , các bản dựng sẽ diễn ra tự động, thường là mỗi giờ hoặc trên mỗi cam kết và bạn sẽ được thông báo nếu có bất kỳ sự cố nào.

Đó là một cách tốt để bắt lỗi sớm, đặc biệt nếu bạn cũng đang chạy thử nghiệm tự động như một phần của bản dựng. Nó đặc biệt hữu ích cho việc tìm kiếm các lỗi cấu hình trong đó bản dựng hoạt động trên một máy của nhà phát triển nhưng không hoạt động ở nơi khác vì một cái gì đó đã bị bỏ qua khỏi kho lưu trữ hoặc môi trường.

Các máy chủ tích hợp liên tục nâng cao hơn cũng cho phép bạn theo dõi các số liệu theo thời gian (ví dụ: tỷ lệ phần trăm bao phủ mã, thời gian xây dựng, dòng mã, v.v.)


1

Xây dựng hàng ngày là được. Bạn chắc chắn cần chúng nếu bạn không có gì khác nhưng thành thật mà nói tôi nghĩ rằng bài kiểm tra của Joel hơi lạc hậu trong những ngày này.

Theo tôi, bạn nên xây dựng liên tục trong ngày, chạy các trường hợp kiểm tra cấp độ đơn vị, hệ thống và chức năng của bạn và đóng gói lý tưởng và triển khai đến một giai đoạn như môi trường cùng một lúc trong khi xác minh rằng có bất kỳ cơ chế phiên bản DB và môi trường nào bạn có đang làm việc như mong đợi.

Nếu thời gian xây dựng hoặc triển khai quá nhiều thì hãy xem xét tối ưu hóa một số vấn đề này với các đĩa ram vật lý hoặc phần mềm, kết nối internet nhanh hơn, các bản dựng tương tự, v.v. .


1

Xây dựng hàng ngày không quan trọng. Các bản dựng hàng ngày luôn thành công là (hoặc các bản dựng chỉ bị hỏng trong một giờ). Có CI khi bản dựng bị hỏng 70% thời gian không hữu ích lắm, vì nếu phần lớn bị hỏng thì nó không giúp bạn xác định được lỗi.


0

Tôi nghĩ rằng nó nên được xây dựng hàng ngày, kiểm tra và triển khai đến máy chủ dàn dựng.

Ý tưởng đằng sau 'xây dựng hàng ngày' là luôn có sẵn thứ gì đó mà người kiểm thử và người quản lý dự án có thể chạy để mọi người có ý tưởng về trạng thái thực của dự án là gì.

Trước đây, với các ứng dụng dành cho máy tính để bàn sau 'bản dựng hàng ngày', người kiểm tra hoặc người quản lý dự án có thể chạy ngay ứng dụng để không phải đề cập đến bước triển khai.

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.