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