Jun 16, 2012

11:14 AM - No comments

Continuous Integration (Phần 1)

Giới thiệu về CI

From Neitcouq's blog

1. Khái niệm.

Continuous Intergration hay CI là một môi trường hỗ trợ phát triển phần mềm có chức năng giúp các thành viên trong team tích hợp (integrate) công việc của họ một cách thường xuyên, liên tục. Mỗi điểm tích hợp sẽ được kiểm tra (verified) bởi một qui trình build và test tự động để đảm bảo phát hiện sớm nhất những lỗi phát sinh trong quá trình tích hợp đó.

Giải pháp này thực sự giúp cho các nhà phát triển phần mềm giảm bớt các vấn đề phát sinh trong quá trình tích hợp và cho phép công việc phát triển phần trở nên mềm nhanh chóng và gắn kết hơn.

CI bao hàm một loạt những quá trình được gắn kết với nhau như: automated build, coding standard check, static analysic, unit test, depoying và intergation test...

Các yêu cầu của một hệ thống CI:

- Một code repository.
- Một hệ thống build tự động.
- Khả năng tự test trên bảng build tự động đó.
- Code phải được commit code hàng ngày.
- Một CI server có thể gắn kết các công việc trên.
- Khả năng test sản phẩm trong môi trường đồng nhất.
- Khả năng report tình trạng bản build.
- Khả năng deploy tự động bản build...

2. Một số CI server thông dụng hiện nay:

CruiseControl, AnthillPro, Bamboo, Continuum, Hudson, Parabuild, TeamCity ...
Xem thêm bảng so sánh tại đây

3. Hudson

Hudson là một CI server điển hình giúp thực hiện việc gắn kết các công việc có tính lặp đi lặp lại của CI. Hudson tập trung vào 2 công việc chính:
- Build/test software một cách liên tục (continuously)
- Quản lý việc thực thi các công việc ngoại biên (externally-run)
Một vài đặc điểm của Hudson:
- Dễ cài đặt.
- Dễ cấu hình.
- Hỗ trợ change set (cho hệ thống SCM như CVS, Subservion...)
- Link trực tiếp tới latest build/ latest successful build.
- RSS/Email integration: thông báo kết quả bảng build qua email, rss.
- After the fact tagging: (hiểu thế nào nhỉ ?): có khả năng build ngay sau khi bản build trước đã hoàn thành.
- JUnit/TestNG test reporting.
- Distributed builds: có thể phân phối bản build đến nhiều computer
- File fingerprinting: có thể build với nhiều version khác nhau của file jar (sau này khi sử dụng Hudson các bạn sẽ hiểu)
- Plug-in support: hỗ trợ nhiều plug-in của third party rất hữu dụng. Bạn cũng có thể tự viết plugin cho mình.

0 comments:

Post a Comment