Tích hợp liên tục - xây dựng Debug và phát hành mọi lúc?


8

Đây có phải là thông lệ tiêu chuẩn khi thiết lập máy chủ Tích hợp liên tục để xây dựng phiên bản Gỡ lỗi và Phát hành của từng dự án không? Hầu hết các nhà phát triển mã với cấu hình dự án chế độ Debug được bật và có thể có các cấu hình đường dẫn thư viện, trình biên dịch xác định hoặc các mục khác được định cấu hình khác nhau giữa Debug / Release sẽ khiến chúng hoạt động khác nhau.

Tôi đã cấu hình máy chủ CI của mình để xây dựng cả Gỡ lỗi và Phát hành cho từng dự án và tôi tự hỏi liệu tôi có đang lật đổ nó không. Giả định của tôi là tôi sẽ làm điều này miễn là tôi có thể nhận được phản hồi nhanh chóng và một khi điều đó xảy ra, sau đó có thể đẩy Bản phát hành sang bản dựng hàng đêm. Có một cách 'tiêu chuẩn' để tiếp cận điều này?


lập trình viên.stackexchange.com / questions / 46646 / Wỉ là một câu hỏi tương tự có thể đáng để xem xét những câu trả lời đó.
JB King

3
Nếu bất cứ điều gì tôi đi theo cách khác - nếu bạn muốn thả một cái thì bạn cần phải xây dựng phiên bản phát hành mỗi lần không phải là phiên bản gỡ lỗi - vì đó là phiên bản có nhiều khả năng bị phá vỡ ...
Murph

Tôi giả sử Bản phát hành là bản dựng duy nhất. Câu hỏi là cũng để xây dựng Debug.
Dary Miller

Câu trả lời:


9

Xây dựng cả hai cấu hình sẽ không bị tổn thương, nhưng nếu bạn phải chọn (đặc biệt là do hạn chế về thời gian xây dựng) thì hãy xây dựng cấu hình Phát hành.

Cuối cùng, bạn muốn xây dựng, kiểm tra, đóng gói và triển khai cấu hình mà khách hàng của bạn sẽ sử dụng và tìm thấy bất kỳ vấn đề nào với nó trước khi họ thực hiện.


8

Chỉ phát hành.

Giả sử các nhà phát triển đang thực hiện các bản dựng gỡ lỗi và các lỗi tồi tệ nhất là 'nó hoạt động trong các bản sửa lỗi'. Nhanh hơn bạn có thể phát hiện ra những điều đó và thu hẹp những thay đổi có thể gây ra cho họ, mọi người sẽ hạnh phúc hơn!


Nếu bạn chỉ có một thành phần, có. Nếu bạn có nhiều thành phần, có một rủi ro là không ai sẽ thử một thành phần cụ thể trong một thời gian và nó bị hỏng, do đó, bạn cần ít nhất là xây dựng mọi thứ hàng đêm trong tất cả các cấu hình.
Jan Hudec

1
@JanHudec - giá trị của một thử nghiệm của bản dựng gỡ lỗi là gì? Nếu bản phát hành hoạt động nhưng gỡ lỗi không phải là lỗi hay chỉ là hậu quả của việc gỡ lỗi?
Martin Beckett

@MartinBeckett: Đó là một phiền toái lớn đối với người tiếp theo, người sẽ cần gỡ lỗi một vấn đề thực sự trên phiên bản gỡ lỗi. Đặc biệt là khi vài tuần sau, điều này hoàn toàn có thể xảy ra nếu bạn có nhiều thành phần.
Jan Hudec

4

Tôi rất muốn giới thiệu và xây dựng và thử nghiệm cả hai nếu nó có thể được thực hiện trong một đêm.

  • bạn có thể phát hiện ra một số heisenbugs
  • bạn chắc chắn rằng khách hàng của bạn sẽ có được hành vi mà bạn đã kiểm tra và xác nhận

1

Bạn nên xây dựng mọi thứ mà có bất kỳ cơ hội nào mà nó sẽ không được thử bởi bất cứ ai trong một thời gian. Điều đó có nghĩa là, nếu bạn chỉ có một mục tiêu xây dựng, bạn không cần phải gỡ lỗi trong tích hợp liên tục, bởi vì các nhà phát triển sẽ nhanh chóng nhận thấy. Nhưng thường xuyên hơn không có nhiều thành phần và hơn các thành phần hiện không được làm việc trên sẽ không được các nhà phát triển xây dựng, nhưng vẫn có thể bị phá vỡ bởi những thay đổi trong mã chung. Trong những trường hợp như vậy, bạn cần xây dựng tất cả các cấu hình để bạn không thấy bản dựng bị hỏng khi bạn cần chạm vào các thành phần đó.

Bây giờ, việc xây dựng mọi thứ trong mọi cấu hình đều mất rất nhiều thời gian, vì vậy bạn không thể xây dựng mọi thứ sau mỗi lần cam kết. Trong trường hợp như vậy, hãy thực hiện các cấu hình phát hành của các thành phần quan trọng nhất mọi lúc và thêm một bản dựng hàng đêm của mọi thứ.

Tôi hiện đang làm việc trong dự án, nơi chúng tôi xây dựng liên tục, phiên bản thăm dò kiểm soát cứ sau 10 phút và mặc dù cấu hình chỉ được chọn vẫn có thể mất hơn 1 giờ sau khi cam kết lớn hơn. Hơn chúng tôi có bản dựng hàng đêm, nó xây dựng tất cả các thành phần trong tất cả các cấu hình và luôn luôn xây dựng sạch, mất khoảng 5 giờ. Và hơn là chúng tôi có bản dựng hàng tuần, bản dựng đó phát hành trong tất cả các biến thể tùy chỉnh và phải mất hơn cả ngày.


0

Nó phụ thuộc vào dự án của bạn. Trong dự án hiện tại của tôi, chúng tôi chỉ xây dựng gỡ lỗi (và chạy thử nghiệm đơn vị) trên mỗi cam kết trong khi chúng tôi xây dựng phiên bản phát hành như là một phần của "bản dựng triển khai".

Ở công ty cuối cùng tôi làm việc, chúng tôi có một vài vấn đề với phiên bản phát hành hoạt động hơi khác một chút vì vậy chúng tôi đã xây dựng gỡ lỗi và phát hành trên mọi cam kết và chạy thử nghiệm đơn vị trên cả hai.


4
và khi bạn nhận ra rằng bản phát hành bị hỏng ngay trước khi triển khai, bạn có hai giờ để giải quyết tình huống
Simon Bergot
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.