24
Trình bày: Lâm Minh Trí Cần Thơ: 06/2012 1

GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

Embed Size (px)

DESCRIPTION

GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

Citation preview

Page 1: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

Trình bày: Lâm Minh Trí

Cần Thơ: 06/2012

1

Page 2: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

NỘI DUNG TRÌNH BÀY

2

Page 3: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC

3

I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại

Incremental

Spiral

Cocomo

Cocomo II

RAD

RUP

Requirements

Analysis

Design

Coding

Testing

Maintenance

Waterfall and Similar Methodology Others Agile and Similar Methodology

Page 4: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

4

I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại (TT)

Waterfall and Similar Methodology

Agile and Similar Methodology

Hướng kế hoạch (plan – driven)Chỉ phù hợp khi yêu cầu khách hàng không thay đổi .Tạo ra phần mềm nhưng chưa biết được giá trị sử dụng (không đúng yêu cầu).Mất nhiều thời gian và chi phí cho việc quay lại để chỉnh sửa ở các giai đoạn trước.Thường trễ tiến độ do kế hoạch không sát với yêu cầu và khi yêu cầu thay đổi.Rủi ro cao.

Hướng giá trị (value – driven).Chấp nhận thay đổi và cho phép xử lý thay đổi nhẹ nhàng và nhanh chóng.Chia nhỏ để xử lý và xác định được kết quả qua từng lát cắt. Quá trình chia nhỏ xử lý được lặp lại cho đến khi sản phẩm hoàn tất.Tạo ra phần mềm có giá trị và được triển khai cho khách hàng sử dụng một cách sớm nhất.Thường xuyên giao tiếp và nhận phản hồi từ phía khách hàng.Liên tục cải tiến cho các giai đoạn (lát cắt) sau.Giảm thiểu rủi ro.

Page 5: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

5

I.1 So sánh mô hình phát triển phần mềm truyền thống và hiện tại (TT).

(Hiện tại) (Truyền thống)

Page 6: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

6

I.2 Chi tiết workflow của Agile methodology thông qua Scrum methodology.

Page 7: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

7

I.2 Chi tiết workflow của Agile methodology thông qua eXtreme Programing (XP) methodology.

Page 8: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

8

I.3 Định nghĩa hệ thống tích hợp liên tục (Continuous Integration ). Phần mềm phát triển theo mô hình Agile còn được gọi là phần mềm

tích hợp liên tục (Continuous Integration ). Hệ thống tích hợp liên tục là thành phần sống còn của một Agile team. Trích dẫn định nghĩa của Martin Fowler “ Continuous Integration is a

software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Many teams find that this approach leads to significantly reduced ntegration problems and allows a team to develop cohesive software more rapidly.”

Page 9: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

9

I.4 Minh họa hệ thống tích hợp liên tục

Trung tâm của hệ thống tích hợp liên tục

Page 10: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

10

I.5 Thực tiễn của hệ thống tích hợp liên tục (Practices of Continuous Integration)

Quản lý phiên bản (source control and version control ). Tự động build bao gồm test. Đôi ngũ phát triển thường xuyên chuyển (commit)

source về nơi lưu trữ chính (mainline). Mỗi khi code có thay đổi sẽ build lại (mainline) thông

qua build server. Báo lỗi cho người lập trình gây lỗi và quản lý dự án. Phát hành phiên bản hoàn chỉnh cho khách hàng khi

không còn lỗi. Tự động phân phối phiên bản mới đến khách hàng. Mọi người có thể nhìn thấy những gì đã xảy ra (thay

đổi, lỗi…) để xem xét và giải quyết.

Page 11: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

11

I.6 Thuận lợi và khó khi áp dụng hệ thống tích hợp liên tục Khó khăn:

Cần thời gian thiết lập hệ thống ban đầu. Đòi hỏi quản lý dự án, người lập trình, người kiểm định phải

am hiểu mô hình phát triển phần mềm Agile, hệ thống tích hợp CI, cách sử dụng các công cụ hỗ trợ cho Agile và CI.

Chi phí thiết bị phần cứng (các server cho CI).

Page 12: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

12

I.7 Tại sao cần hệ thống tích hợp liên tục? Giảm thiểu rủi ro do lỗi được phát hiện sớm. Giảm thiểu sự lặp lại cho các quá trình Tạo phần mềm có giá trị sử dụng sớm nhất có thể và sẳn sàng

triển khai mọi lúc mọi nơi. Cung cấp cái nhìn xuyên suốt tổng quan và cụ thể cho từng giai

đoạn. Nâng cao kỹ năng của đội ngũ nhân viên phát triển phần mềm. Cải thiện chất lượng phần mềm. …

Page 13: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

I.GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC (TT)

13

I.8 Những công cụ được sử dụng trong hệ thống tích hợp liên tục Code Repositories

SVN, Mercurial, Git, Visual Source Safe…

Continuous Build Systems Jenkins, Bamboo, Cruise,Hudson,…

Test Unit Frameworks JUnit,Cucumber , CppUnit …

Test report website Mantis, TestLink, Redmine…

Artifact Repositories Nexus, Artifactory, Archiva …

And others

Page 14: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

II. GIỚI THIỆU JENKINS

14

II.1 Giới thiệu Là một ứng dụng web application mã nguồn mở (được cộng đồng phát triển theo giấy

phép MIT) đóng vai trò máy chủ build & test của hệ thống tích hợp liên tục. Jenkins được viết bằng Java nên Jenkins có thể kết hợp được với hầu hết các công cụ

khác của hệ thống tích hợp liên tục với nhiều nền tảng khác nhau và đặc biệt là tảng mobi application (android).

Tiền thân là Hudson được viết bởi Kosuke Kawaguchi tại Sun, kể từ khi Sun được mua lại bởi Oracle vào năm 2010, một bộ phận phát triển Hudson đã tách ra phát triển riêng và được đặt tên là Jenkins.

Được sử dụng rộng rãi và được phát triển cải tiến liên tục bởi cộng đồng mã nguồn mở Đạt nhiều giải thưởng :InfoWorld Bossies Award, 2011 O'Reilly Open-Source Award, 2011

ALM&SCM, SDTimes 100, 2010, 2011 ,GlassFish Community Innovation Award 2008, Duke's Choice Award 2008

Được các tổ chức lớn tin dùng: Ebay,Apache, NASA,Boeing,Mozilla, Linked in,…

Page 15: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

II. GIỚI THIỆU JENKINS (TT)

15

II.2 Đặc điểm của Jenkins Dễ dàng cài đặt và sử dụng. Đa nền tảng. Hỗ trợ cho nhiều công nghệ phát triển phần mềm. Được sử dụng rộng rãi. Dễ mở rộng. Dễ dàng liên kết với các công cụ khác của hệ thống tích hợp liên tục thông qua các

plug in. … Miễn phí.

Page 16: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

III. VAI TRÒ CỦA JENSKIN TRONG CI

16

III.1 Là trái tim của CILà CI server (build & test server) giữ vị trí trung tâm

“trái tim” cho mọi hoạt động của hệ thống.

Khách hàng, Kiểm định,…

Page 17: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

III. VAI TRÒ CỦA JENSKIN TRONG CI (TT)

17

III.2 Khép kín quy trình phát triển phần mềm một cách tự động.

Nhờ vào việc hỗ trợ đa nền tảng, công nghệ Jenkins giúp khép kín quy trình phát triển phần mềm một cách tự động theo mô hình Agile nói chung và hệ thống tích hợp liên tục nói riêng.

Với hơn 400 plugin và được phát triển thêm không ngừng Jenkins đã trở thành trợ thủ đắc lực cho hệ thống CI.

Page 18: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

III. VAI TRÒ CỦA JENSKIN TRONG CI (TT)

18

III.2 Khép kín quy trình phát triển phần mềm một cách tự động (TT).

Source control Tool

SVN, VSS, CSV, GIT,

Team Foundation Server

Test ToolTestLink,

Junit.Nunit, MSTest…

Build ToolAnt, Maven,

MSBuild,Cmake

Notification

Code Coverage

Virtual Machines

Static Analysis

DeployServer

Jenkins

Customer

DeveloperAnd others

team

Page 19: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

IV. LỢI ÍCH JENKINS MANG LẠI

19

Tất cả với Jenkins hầu như là tự động. Giảm thời gian và chi phí.

Nâng cao năng lực nhân viên? Có thể tóm gọn lợi ích Jenkins mang lại là FESS.

Faster. Easier. Safer. Smarter.

Page 20: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

V. ĐỊNH HƯỚNG PHÁT TRIỂN AGILE & CI?

20

Áp dụng một phần của Jenkins• Build server• Version control

Áp dụng test unit Quản lý dự án theo mô hình Agile Áp dụng tất cả những hỗ trợ của Jenkins trong CI

1

2

3

4

Page 21: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

VI. KHÓ KHĂN KHI ÁP DỤNG AGILE & CI?

21

Thay đổi quan niệm cũ về quản lý dự án? Thiết lập quy trình ban đầu phù hợp? Thiết lập hệ thống ? Kỹ năng của quản lý dự án, lập trình viên,

kiểm định viên?

Page 22: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

VII. THẢO LUẬN

22

??

Page 23: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

VIII. DEMO

23

Page 24: GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS (Continuous Integration System with Jenkins)

Tài liệu tham khảo & chương trình cài đặt Jenkins Máy: 172.16.160.208 Tài khoản: user/user Thư mục: Jenkins

THANKYOU!

24