Phát hành bản dựng và bản dựng hàng đêm


13

Một giải pháp điển hình là có một bản dựng CI (Tích hợp liên tục) chạy trên máy chủ xây dựng: Nó sẽ phân tích mã nguồn, tạo bản dựng (trong gỡ lỗi) và chạy thử nghiệm, đo lường phạm vi kiểm tra, v.v.

Bây giờ, một kiểu xây dựng khác thường được biết đến là "Xây dựng hàng đêm": thực hiện các công cụ chậm như tạo tài liệu mã, tạo gói thiết lập, triển khai để kiểm tra môi trường và chạy thử nghiệm tự động (hút thuốc hoặc chấp nhận) đối với môi trường thử nghiệm, v.v.

Bây giờ, câu hỏi:

  • Có tốt hơn không khi có bản phát hành "Bản dựng phát hành" riêng biệt thứ ba dưới dạng bản phát hành?
  • Hoặc làm "Xây dựng hàng đêm" trong chế độ phát hành và sử dụng nó như một bản phát hành?

Bạn đang sử dụng gì trong công ty của bạn?

(Bản dựng phát hành cũng nên thêm một số loại thẻ để kiểm soát nguồn của phiên bản sản phẩm tiềm năng.)

Câu trả lời:


13

Một trường hợp để có bản dựng phát hành bằng với bản dựng hàng đêm là: bạn muốn kiểm tra chính xác những thứ bạn phát hành . Bạn không muốn phát hiện ra các lỗi trong sản xuất có thể đã được phát hiện trong thử nghiệm dev.

Sự khác biệt giữa bản phát hành và bản dựng hàng đêm:

  • Xây dựng hàng đêm được chạy tự động, tốt, mỗi đêm, trong khi bản phát hành nên được chạy bằng tay tại một số thời điểm nhất định
  • phát hành bản dựng nên lý tưởng gắn thẻ / phân nhánh mã nguồn và có thể triển khai các tạo phẩm xây dựng trong một repo trung tâm (ví dụ: khi sử dụng Maven)

Những khác biệt này trong thực tế là một vài lựa chọn bổ sung trong hầu hết các hệ thống quản lý xây dựng mà tôi biết. Để giảm thiểu khả năng xảy ra lỗi của con người, chúng có thể được lưu, ví dụ như trong tệp bó / tập lệnh chỉ lấy các tham số cần thiết (và xác thực chúng).


7

Chà, tôi muốn bản dựng phát hành càng gần với đêm càng tốt! Lý tưởng giống hệt nhau nhưng với một thẻ.

Vấn đề là nếu bản phát hành của bạn và bản phát hành hàng đêm không giống nhau thì có khả năng bất cứ điều gì khác biệt đều có thể che giấu một vấn đề (hoặc khiến việc theo dõi một vấn đề khó khăn hơn nhiều).


3

Tôi sẽ có một quy trình xây dựng duy nhất, đó sẽ xây dựng mọi thứ mỗi khi đăng ký được thực hiện bởi dịch vụ CI. Đó sẽ là cả bản sửa lỗi và bản phát hành.

Có hai hoặc ba quy trình riêng biệt chỉ là yêu cầu chúng bắt đầu thay đổi ngẫu nhiên mà không được ghi lại, và sẽ không lâu sau khi ai đó thấy mình phải thực hiện 15 bước cho mỗi bản phát hành tiềm năng để sẵn sàng ra khỏi cửa.


Công ty của tôi rất giống như thế này với 4 quy trình xây dựng khác nhau. Chúng ta cần thay đổi điều đó.
Brandon

2

Một điều tôi muốn làm là đặt bản dựng hàng đêm ở chế độ phát hành thay vì chế độ gỡ lỗi. Với các khung ghi nhật ký như log4net thay thế System.Diagnostics.Debug, sự khác biệt chính giữa chế độ Phát hành và Gỡ lỗi là thời gian sống của đối tượng và tối ưu hóa mã.

Trừ khi bạn thực sự sẽ gắn một trình gỡ lỗi vào bản dựng hàng đêm của bạn, thì tôi cũng khuyên bạn nên làm điều này.

Quá trình chúng tôi thực hiện là bản dựng hàng đêm chạy mỗi đêm và nếu nó hoạt động thì chúng tôi có thể triển khai bản dựng tương tự cho các máy chủ khác của chúng tôi (không xây dựng lại, chỉ cần lấy các trình cài đặt đóng gói và chạy chúng). Nếu chúng tôi gặp sự cố với bản dựng hàng đêm thì chúng tôi sẽ kiểm tra các thay đổi của nó trên một nhánh và chạy bản dựng 'hàng đêm' khỏi nhánh đó vào ban ngày. Các bài kiểm tra sau đó có thể được chạy lại.

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.