2008-10-10 31 views
8

Cách đây vài năm, các nhà phát triển thực sự đã tạo các bản dựng cho khách hàng. Điều này rõ ràng là một thảm họa vì lý do quá nhiều để liệt kê.Công cụ nào bạn đề xuất để tự động tạo ứng dụng của bạn?

Sau đó, khi chúng tôi bắt đầu tìm hiểu các lỗi theo cách của chúng tôi, chúng tôi đã tìm cách tự động tạo toàn bộ ứng dụng trên máy xây dựng chuyên dụng. Văn hóa tại thời điểm đó là rất không thích hợp để đưa vào các công cụ bên ngoài, vì vậy chúng tôi xây dựng hệ thống tự động xây dựng của riêng mình bằng cách viết một ứng dụng VB.

Điều này làm việc tốt trong một thời gian, cho đến khi cấu trúc của dự án bắt đầu thay đổi, các dự án mới được thêm vào và chúng tôi cần xây dựng ứng dụng theo nhiều cách khác nhau. Sau đó, những yếu kém của autobuilder tay quay của chúng tôi trở nên rõ ràng và, theo thời gian, ngày càng trở nên nặng nề. Bệnh này đã tiến triển đến thời điểm mà QA (người sở hữu quá trình xây dựng của chúng tôi) thậm chí không thể duy trì autobuilder vì nó đòi hỏi kỹ năng lập trình ngày càng nhiều. Mỗi khi chúng ta thêm một dự án hoặc thay đổi một cái gì đó trong một dự án hiện có, nó tiêu tốn nhiều thời gian phát triển hơn để làm cho nó hoạt động. Đã có những ngày khi chúng tôi không thể sản xuất một bản dựng vì hệ thống đã bị hỏng.

Tôi hiện đang ở vị trí mà tôi có thể thay đổi quy trình này và tôi đang tìm cách xóa toàn bộ hệ thống và đặt thứ gì đó khác vào vị trí của nó. Mục tiêu của tôi là:

  • Có hệ thống tự động chạy có thể không tương tác với con người tại một thời điểm cụ thể mỗi ngày. Nó sẽ có thể thu thập tất cả các mã nguồn, biên dịch tất cả các ứng dụng, tạo các thiết lập, đặt các sản phẩm đã hoàn thành trên mạng chia sẻ và có thể kích hoạt hệ thống thử nghiệm tự động khởi động (chúng tôi sử dụng QTP).
  • Hệ thống tự động xây dựng phải đủ linh hoạt để dễ dàng thích ứng với những thay đổi trong dự án mà không cần sửa chữa lớn.
  • Nó phải đủ đơn giản để QA có thể sở hữu hệ thống và không yêu cầu tài nguyên nhà phát triển thực hiện thay đổi đối với cách tạo dựng.

Trải nghiệm của bạn là gì? Bạn có thể giới thiệu một hệ thống tự động xây dựng không? Tôi có nên có các mục tiêu khác nhau không?

Trả lời

4

Chắc chắn nhìn vào MSBuild nếu bạn đang ở trên ngăn xếp Microsoft.

Joel luôn diễn ra và về mức độ tuyệt vời của FinalBuilder, vì vậy có thể đáng xem.

5

Tôi hiện đang sử dụng CruiseControl tích hợp với Ant để kiểm soát các bản dựng dự án. Điều này cho phép tính linh hoạt của lịch trình xây dựng và có nghĩa là bạn có thể tự động hóa toàn bộ quá trình xây dựng khá dễ dàng bằng cách sử dụng các tập lệnh Ant. Ngoài ra, trong thời gian sửa lỗi, bạn có thể thiết lập CruiseControl để xem các lần gửi kiểm soát nguồn thay vì khoảng thời gian và xây dựng khi chúng xảy ra. Điều này cho phép nhà phát triển phản hồi rất nhanh về sửa lỗi.

+0

+1 cho kiểm soát hành trình, tôi ánh trăng làm kỹ sư xây dựng của công ty và tôi sử dụng nó để xây dựng hàng đêm (khoảng 300 thiết bị cầm tay trên nhiều sản phẩm) và cũng sử dụng nó cho bản dựng. – omermuhammed

+1

Về mặt biểu tượng, bây giờ tôi đã chuyển sang Hudson :) IMO, nó được đánh bóng nhiều hơn CC và dễ dàng hơn nhiều để thiết lập các loại dự án khác nhau. – workmad3

1

Khi các công cụ được phân phối với MS Visual Studio, bạn có thể muốn sử dụng MSBuild. Bổ sung Community bộ công cụ cho MSBuild thậm chí sẽ cung cấp cho bạn khả năng kiểm tra mã từ Subversion và đầu ra zip.

Chúng tôi đang sử dụng thành công trong công ty của chúng tôi. Các dự án bao gồm một số giải pháp với hơn 100 tiểu dự án. Làm việc như một say mê.

1

Visual Build Pro thật tuyệt, nếu máy xây dựng của bạn là Windows. Tôi nghĩ điều này sẽ đáp ứng yêu cầu của bạn về số QA sở hữu hệ thống. Nhưng đừng hiểu lầm, nó khá mạnh mẽ.

4

Chúng tôi vừa di chuyển từ một tập hợp các tập lệnh Perl được cán bằng tay sang thiết lập Buildbot. Tôi tìm thấy nó bởi vì đó là những gì Google's using for Chrome.

Bạn có thể làm nightlies, hoặc nó có thể tích hợp với kiểm soát nguồn để làm một xây dựng thử nghiệm bị cô lập bất cứ khi nào ai làm kiểm tra, hoặc một loạt các thứ khác. Nó cũng song song; bạn có thể có nhiều hơn một máy trong trang trại xây dựng, hoặc cho các nhiệm vụ chuyên ngành hoặc chỉ để xử lý tải nhiều hơn.

Toàn bộ hệ thống được viết bằng Python, do đó, nó là nền tảng bất khả tri, điều quan trọng nếu bạn cần làm các bản dựng trên nhiều nền tảng. Nó có thể làm bất cứ điều gì bạn có thể làm từ dòng lệnh; chúng tôi có nó gọi MSBuild cho các thành phần chế độ người dùng, một DDK build cho các phần chế độ hạt nhân và chạy các sản phẩm cho các bản dựng thử nghiệm đơn vị.

Hết hộp hỗ trợ most OSS source control tools, nhưng nếu bạn đang sử dụng TFS hoặc cái gì khác bạn có thể cần phải sửa đổi gói mà bạn cài đặt trên máy phụ thuộc.

+0

+1 cho buildbot! Tôi đã chuyển từ Cruise Control sang BB gần đây, những lợi thế rất nhiều (cấu hình dễ dàng hơn, theo dõi các tệp nhật ký tùy ý, gỡ lỗi dễ dàng, rô bốt điều khiển IRC hài hước ...) – richq

2

Tôi nghĩ bạn đang đi đúng hướng ở đây.

Bất kỳ ai chăm sóc quá trình xây dựng tự động của bạn cần phải có hiểu biết cơ bản về cách giải pháp của bạn phù hợp với nhau. Điều này không nhất thiết có nghĩa là biết cách viết mã hoặc giải pháp kiến ​​trúc, nhưng họ sẽ yêu cầu hiểu rõ cách thức giải pháp biên dịch, gói chính nó, v.v.

Bạn có thể cần phải chia sẻ trách nhiệm xây dựng giữa người hoặc nhóm để hoàn thành điều này. Tôi muốn nói rằng xây dựng hàng ngày là một "trách nhiệm nhóm".

Tôi muốn xem xét việc thiết lập cấu hình xây dựng đường cơ sở có thể được mở rộng cho các bản dựng "sử dụng đặc biệt" (ngoài việc chỉ xây dựng một phiên bản phát hành), ví dụ: phiên bản quốc tế, cụ FxCop/Chất lượng cấu hình, xây dựng + Các xét nghiệm Đơn vị chạy, tích hợp liên tục xây dựng, một xây dựng cấu hình để chạy trên máy trạm phát triển vv

Thay vào đó, tôi muốn nhằm mục đích để đạt được những điều sau đây:

  • phiên bản tự động, ký vv
  • Khả năng để sản xuất sản lượng tiết (đăng nhập) để giúp debug build phá vỡ
  • vào thời điểm đó - nó nên xử lý lỗi đúng cách, nắm bắt càng nhiều thông tin và đăng nhập nó đúng
  • Consiste ncy - Nó sẽ làm việc cùng một cách mỗi thời gian để tạo ra kết quả lặp lại
  • Run trong một môi trường truy cập sạch, hạn chế
  • Vâng bình luận/tài liệu để nó có thể được hiểu bởi đội ngũ nhân viên mới, vv
  • Lựa chọn để tạo ra ghi chú phát hành, số liệu biên dịch, tạo báo cáo (nếu tùy chọn này có sẵn)
  • Khả năng triển khai cho nhiều môi trường
  • Hỗ trợ các cách khác nhau để lấy mã nguồn từ điều khiển nguồn, ví dụ: bởi changeset, nhãn, ngày, v.v.
  • Đối với các khuyến nghị về công cụ, tôi đã sử dụng tệp FinalBuilder, Visual Build Pro, MSBuild/Team Build, nAnt, CruiseControl và CIFactory cùng với các tệp hàng loạt cũ.

    Từng ưu điểm và nhược điểm của nó, tôi sẽ không đưa ra đề xuất ngoại trừ việc nói rằng các sản phẩm có hỗ trợ giao diện người dùng khá dễ làm việc hơn, nhưng đôi khi lại kém hiệu quả hơn nhiều. Nếu bạn đang làm việc với VIsual Studio, MSBuild là rất mạnh mẽ, nhưng có một đường cong học tập hơi dốc.

    +0

    Câu trả lời hay, nhưng tôi thực sự muốn bạn thêm một vài ưu và khuyết điểm khi bạn nhìn thấy chúng, như bạn dường như đã sử dụng một loạt các công cụ tốt. +1 –

    5

    Tôi sử dụng FinalBuilder và FinalBuilder Server để xây dựng hàng đêm. Đôi khi hơi khó khăn, nhưng nếu bạn nghĩ rằng nó khá dễ dàng để tạo các dự án mở rộng có thể xây dựng kiểu dự án X, xây dựng cơ sở dữ liệu từ các kịch bản lệnh thay đổi và triển khai nó đến một máy chủ thử nghiệm.

    Nó cũng có thể xử lý tất cả các loại điều tuyệt vời và tuyệt vời như nén bản dựng hàng đêm và tải lên FTP hoặc tự động tạo ảnh ISO.

    1

    Chúng tôi sử dụng CruiseControl.NET và UppercuT (sử dụng NAnt) để thực hiện việc này. UppercuT sử dụng các quy ước để xây dựng để giúp mọi người dễ dàng bắt đầu bằng cách trả lời ba câu hỏi (Giải pháp tên là gì? Đường dẫn đến kiểm soát nguồn là gì? Tên công ty của bạn là gì?) Và bạn đang xây dựng.

    http://code.google.com/p/uppercut/

    Một số giải thích tốt ở đây: UppercuT

    0

    Chúng tôi sử dụng buildbot Hudson cho cho lớn web Java xây dựng ứng dụng từ kiến ​​xây dựng kịch bản. Hudson là khá ngọt ngào cho các mục đích của chúng tôi. Nó có một thiết lập master/slave để các bản build có thể được thực hiện đồng thời (trên một bộ đếm thời gian hoặc theo yêu cầu). Các nút Slave có thể là bất kỳ combo hệ điều hành/phần cứng nào mà nó có các công cụ xây dựng cần thiết đã có trên nó và trên mạng (và sẽ không bị hỏng sau mỗi 10 phút).

    Giao diện dựa trên web đầy đủ bao gồm đầu ra bảng điều khiển trực tiếp, nhật ký thay đổi, tạo phẩm từ bản dựng sẵn có trên mạng bao gồm các bản dựng trước (nếu thành công). Awesomesauce!

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