Wiki


Wiki Table of Contents

Page Details

First published by:
Last revision by:
This page has not yet been rated

Chapter 8 - Setting Up Continuous Integration with Team Build

 

Objectives

  • Tìm hiểu mục đích của một continuous integration build.
  • Cài đặt continuous integration bằng cách sử dụng Microsoft® Visual Studio® Team System Team Build.
  • Tối ưu hóa continuous integration build của bạn để giảm các bottlenecks(sự bế tắc).

Overview

Chương này giải thích cho bạn bằng cách nào bạn có thể cài đặt các continuous integration builds với Team Build và Microsoft Visual Studio Team Foundation Server (TFS). Bạn sử dụng continuous integration builds để nhanh chóng lấy các phản hồi về chất lượng build ngay sau khi một check-in  càng tốt. Trong suốt quá trình phát triển nhóm, điều quan trọng nhất là lấy được các phản hồi nhanh chóng về chất lượng của các check-in, đặc biệt là chúng nối với sự thay đổi của các lập trình viên khác và các break the build.

Một continuous integration build cho bạn một cơ hội để sửa mã nhanh chóng unblock( không cấm) các thành viên của các đội khác,  qua đó nâng cao tính nhất quán và chất lượng của build của bạn.

Team Foundation Server mặc định không hỗ trợ các continuous integration builds. Có thể là, với sự giúp đỡ của một Microsoft-supplied extension, để mở rộng build engine để hỗ trợ cho continuous integration.

How to Use This Chapter

Sử dụng chương này để học các chiến thuật cho các continuous integration và để tìm hiểu bằng cách nào cài đặt và cấu hình các continuous integration builds với Team Build. Bằng cách đi qua từng bước để giúp bạn thiết lập continuous integration build hãy xem  "How To: Set Up a Continuous Integration Build."  

Nếu bạn cảm thấy lạ lẫm về TFS và Team Build, hoặc nếu bạn muốn tìm hiểu nhiều hơn về các tùy chọn có sẵn đối với automating và scheduling builds, hãy đọc "Chương 7 - Team Build Explained" trước khi đọc chương này.

Strategies for Continuous Integration Builds

Continuous integration (CI) là quy trình của việc tạo các builds bất cứ khi nào một lập trình viên kiểm tra code trong source control. Sau đây là danh sách về các chiến lược khác nhau sử dụng cho continuous integration builds: 

  • Build on each check-in.
  • Rolling build after a specific number of check-ins.
  • Rolling build after a specific time interval.
  • Rolling build after a specific number of check-ins or time interval.

Build on Each Check-In

Building ngay lập tức sau khi tất cả các check-in là chiến lược continuous integration đơn giản nhất và nói chung cung cấp cho bạn các thông tin feedback nhanh nhất. Tuy nhiên, nếu các check-in diễn ra nhanh chóng đủ để overwhelm  các build server, bạn nên sử dụng một phương pháp rolling build approach nơi bạn build sau một số các check-in cụ thể hay sau một khoảng thời gian nhất định. Để xác định xem nếu bạn cần sử dụng một rolling build, hãy xác định những điều sau:

  • Length of your team build in minutes( Độ dài của các team build của bạn tính bằng phút).
  • Average frequency of check-ins in minutes(Tần số trung bình của các check-in bằng phút)
  • Time window during which frequent check-ins occur:

Nếu độ dài của các build dài hơn tần số trung bình(average frequency) của các check-in, các build của bạn bắt đầu queue up vì lúc đầu các build chưa được hoàn thành trước khi check-in tiếp theo xảy ra bắt đầu cho các build khác. Nếu build queue phát triển đủ dài, điều này có thể tác động đến các thực thi  của  build server và blocks(khóa lại) các build khác từ lúc bắt đầu(from being started), như là các scheduled build. Xem lại  time window  trong suốt khi các check-ins xảy ra và xác định nếu queue có thời gian để clear chính nó sau khi  iai đoạn check-in busiest đã qua. 

Để có thêm thông tin, hãy xem "How To: Set Up a Continuous Integration Build in Visual  Studio Team Foundation Server."

Rolling Build After a Specific Number of Check-ins

Nếu build server của bạn đã overload như là một kết quả của việc khởi tạo các build sau mỗi check-in, bạn có thể chọn để chỉ build sau khi một số các check-in cụ thể được hoàn thành. Trong khi là rolling build solution đơn giản nhất, nó có một số các hạn chế đáng kể. Bởi vì các build server cầu thấy được số các check-in cụ thể trước khi một build được khởi động, check-in cuối cùng của ngày  hầu như được bảo đảm không lấy một build và do đó mà các build feedback bị trì hoãn.

Rolling Build After a Specific Time Interval

Tạo ra một build chỉ sau một khoảng thời gian nhất định trôi qua sau khi mỗi check-in là một sự cải thiện trong các building sau một số các check-in cụ thể. Phương pháp này được đảm bảo để tạo một build với một timeframe cụ thể xung quanh mỗi check-in được tạo. Hãy nhớ là mỗi build có thể có một số các associated check-ins khác nhau - một số các build có lẽ chỉ có một check-in, trong khi những cái khác có nhiều hơn. Càng nhiều các check-in trong mỗi build, càng nhiều khó khăn để xác định check-in nào tạo ra các breaking change.

Rolling Build After a Specific Number of Check-Ins or Time Interval

Tạo một build sau khi một khoảng thời gian cụ thể hay một số các check-in (không quan tâm cái nào xảy ra trước) results trong sự bền vững nhất trong rolling builds của bạn trong khi giảm các build server load. Sử dụng một rolling build nếu continuous integration build của bạn tạo một build queue rất dài và kết quả trong các build là  diễn ra một thời gian đáng kể sau check-in. Sử dụng một  check-in interval để xác định số các check-ins giữa mỗi build. Sử dụng giai đoạn time-out period để chắc là một build sẽ diễn ra thậm chí nếu không có thêm các check-in.

Determining Your Rolling Build Interval

Để xác định các ideal rolling build interval, phân chia tần số trung bình của các check-in bằng độ dài của build của bạn.  Thí dụ, nếu bạn có một build mất 10 phút và trung bình một check-in 5 phút bạn có thể gán một check-in interval của hai  check-in và một giai đoạn time-out của 10 phút. Điều này giúp đảm bảo rằng các build được hoàn thành trước khi build tiếp theo bắt đầu. Nếu bạn lưu ý thấy load quá mức trên build server của bạn, bạn có thể tăng các giá trị này lên.

Continuous Integration Build in Team Foundation Server

Team Foundation Server 2005 không cung cấp một continuous integration solution out of box, nhưng nó đã cung cấp framework cho bạn để thực thi continuous integration build solution của riêng bạn. 

Để có thêm thông tin về cài đặt một continuous integration build với TFS, hãy xem "How To: Setup a Continuous Integration Build in Visual Studio Team Foundation Server." How To article  này sử dụng solution đã được  Visual Studio Team System development team cung cấp. Solution installs một Web service chạy dưới một account có truy cập đến TFS server. Team Foundation Server có thể gửi một e-mail message hay call  một Web service khi các event cụ thể xảy ra. Event mechanism này được sử dụng bởi continuous integration solution để đăng kí một Web service với CheckinEvent, để bất cứ khi nào mà một check in xảy ra, Web service khởi động một Team Build.

Summary

Sử dụng  continuous integration builds để kick off một build bât cứ khi nào một lập trình viên kiểm tra code trong source control. Mặc dù  Team Build không cung cấp một continuous integration solution out of the box, bạn có thể tùy chỉnh các build và thực thi continuous integration build solution của riêng bạn.  

Tuỳ thuộc vào yêu cầu của project cụ thể của bạn, bạn có thể set các continuous integration build như sau: 

  • Continuous Integration build trên mỗi check-in.
  • Rolling build after a specific number of check-ins or specific time interval (whichever occurs earlier) in order to reduce build server load.

Additional Resources

  • Để có thêm thông tin về việc làm cách nào để sử dụng Visual Studio Team System continuous integration solution, hãy xem "Continuous Integration Using Team Foundation Build" tại đây

            http://msdn2.microsoft.com/en-us/library/ms364045(VS.80).aspx

  • Để download Visual Studio Team System continuous integration solution MSI, hãy xem http://download.microsoft.com/download/6/5/e/65e300ce-22fc-4988-97de-0e81d3de2482/ci.msi

 

  • Để có thêm thông tin về agile development và continuous integration trong Team Foundation Server, hãy xem "Extend Team Foundation Server To Enable Continuous Integration" tại http://msdn.microsoft.com/msdnmag/issues/06/03/TeamSystem/default.aspx

Download tài liệu chương 8 tại đậy: Part III-Chapter 8

Recent Comments

Leave the first comment for this page.