SlideShare uma empresa Scribd logo
1 de 14
GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN
TỤC VỚI JENKINS
Lâm Minh Trí
(minhtri.itp@gmail.com)
TP.Hồ Chí Minh, ngày 20 tháng 01 năm 2014
Page1
MỤC LỤC
MỤC LỤC......................................................................................................................................................... 1
1. TỔNG QUAN ............................................................................................................................................... 2
2. GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC ...................................................................................... 2
2.1. Định nghĩa hệ thống tích hợp liên tục (Continuous Integration)............................................................ 2
2.2. So sánh mô hình phát triển phần mềm truyền thống (waterfall) và agile............................................... 4
2.3. Mô hình phát triển phần mềm Agile (với mô hình cụ thể Scrum).......................................................... 6
2.4. Thực tiễn của hệ thống tích hợp liên tục (Practices of Continuous Integration) .................................... 6
2.5. Khó khi áp dụng hệ thống tích hợp liên tục............................................................................................ 7
2.6. Tại sao cần hệ thống tích hợp liên tục? .................................................................................................. 7
3. GIỚI THIỆU JENKINS ................................................................................................................................ 8
3.1. Giới thiệu................................................................................................................................................ 8
3.2. Đặc điểm của Jenkins ............................................................................................................................. 8
3.3. Vai trò của Jenskin trong CI................................................................................................................... 8
3.4. Lợi ích của Jenkins mang lại ................................................................................................................ 10
3.5. Cài đặt – demo...................................................................................................................................... 10
4. KẾT LUẬN ................................................................................................................................................. 11
4.1. Loại dự án nào nên áp dụng Jenkins?................................................................................................... 11
4.2. Chúng ta kết hợp các công cụ hiện tại đang được sử dụng thông qua Jenkins như thế nào? .............. 11
4.3. Lợi ích mang lại.................................................................................................................................... 11
5. TÀI LIỆU THAM KHẢO (References)...................................................................................................... 13
Page2
1. TỔNG QUAN
Trong số chúng ta có lẽ đã từng thắc mắc với các hệ thống phần mềm cập nhật phiên bản liên tục hàng giờ,
hàng ngày thì họ đã làm điều đó như thế nào và tại sao có phiên bản liên tục và có phiên bản stable? Chúng
ta thử hình dung trong quy trình phát triển của một opensource, mã nguồn được viết bởi cộng đồng và được
tích hợp liên tục vào bất kỳ thời điểm nào trong ngày. Vậy thì làm thế nào họ có thể kiểm soát được lỗi của
phần mềm trong khi đó các phiên bản vẫn điều đặn được xuất bản ra cộng đồng? Các quá trình hotfix lỗi và
nhận phản hồi từ cộng đồng người sử dụng, cải tiến mở rộng tính năng được lặp lại liên tục.
Chúng ta đã quen với việc sử dụng các trong công cụ quản lý source code ( SVN, GIT, VSS,CSV,..), các
công cụ quản lý lỗi (redmine, mantis, testlink), các công cụ build (MS build, Nant,…), các công cụ test tự
động (Junit, Nunit,CppUnit,..),…Việc kết hợp tất cả các công cụ này thành một quy trình tự động và khép
kín sẽ mang lại hiệu quả gì cho chúng ta? Và việc kết hợp này sẽ được thực hiện như thế nào?
Phần tiếp theo sẽ phần nào giải đáp các vấn đề trên.
2. GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC
2.1. Định nghĩa hệ thống tích hợp liên tục (Continuous Integration).
• Tích hợp liên tục là một hoạt động phát triển phần mềm mà ở đó các thành viên của một
nhóm sẽ tích hợp công việc của họ với nhau liên tục, thường thì các thành viên tích hợp
công việc ít nhất mỗi lần trong ngày, dẫn đến có nhiều sự tích hợp trong ngày. Mỗi sự tích
hợp như vậy sẽ được kiểm tra bởi một công cụ build tự động (bao gồm test) để phát hiện ra
những lỗi tích hợp càng sớm càng tốt.
• 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 ).
Page3
• Minh họa
Page4
2.2. So sánh mô hình phát triển phần mềm truyền thống (waterfall) và agile
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
hoặc ít khi 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 sprint. 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 có thể.
 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
print sau.
 Giảm thiểu rủi ro.
Page5
Mô hình:
Waterfall and Similar
Methodology
Others Agile and Similar
Methodology
Incremental
Spiral
Cocomo
Cocomo II
RAD
RUP
…
Minh họa khả năng giảm thiểu rủi ro của mô hình Agile so với Waterfall:
Page6
2.3. Mô hình phát triển phần mềm Agile (với mô hình cụ thể Scrum)
Có rất nhiều biến thể của Agile để phù hợp với từng dự án cụ thể và phù hợp với điều kiện môi trường phát
triển của mỗi công ty. Tuy nhiên tất cả điều dựa trên các mục đích chính của dự án là phát triển và triển khai
nhanh chóng sản phẩm đến khách hàng với mức độ hài lòng cao nhất và rủi ro là thấp nhất qua mỗi giai đoạn
(hoàn thành đóng gói nhóm chức năng của mỗi giai đoạn). Khách hàng có thể dùng và góp ý về sản phẩm
một cách sớm nhấtcó thể. Qua mỗi giai đoạn nhóm dự án có thể hiệu chỉnh rút kinh nghiệm và cải tiến phù
hợp với yêu cầu của khách hàng hơn vì vậy ở những giai đoạn sau được kế thừa kinh nghiệm của những giai
đoạn trước nên năng suất và hiệu quả công việc của đội dự án được tăng lên, mức độ hài lòng của khách
hàng cũng được đáp ứng một cách tốt nhất có thể.
Và một trong số mô hình cụ thể của Agile được áp dụng phổ biến hiện nay đó là Scrum.
Về chi tiết mô hình này vui lòng tham khảo quy trình sản xuất phần mềm của trung tâm (QT04)
2.4. 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 (tự động 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ính hợp.
 Tự động phân phối phiên bản mới đến khách hàng bằng một quy trình tự động khép kín.
 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
một cách minh bạch.
Page7
2.5. 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 thử 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).
2.6. 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 (phân tích, thiết kế, lập trình khi sản phẩm không
đúng yêu cầu hoặc yêu cầu thay đổi).
 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.
Page8
3. GIỚI THIỆU JENKINS
3.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 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.
 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,…
3.2. Đặc điểm của Jenkins
 Hỗ trợ đầy đủ nhất các tính năng tự động hóa của hệ thống tích hợp liên tục bằng việc kết
hợp giữa các thành phần mở rộng (so với các công cụ khác).
 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 (JAVA, .NET, PHP, CPP Ruby,…).
 Được sử dụng rộng rãi.
 Dễ dàng tùy chỉnh 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í
3.3. Vai trò của Jenskin trong CI
 Là 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.
Page9
 Giúp 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.
- Với hệ thống plugin phong phú và đa dạng cho phép chúng ta có nhiều lựa chọn kết
hợp và điều tuyệt vời hơn là hầu hết chúng đều là mã nguồn mở miễn phí và tốt nhất
hiện nay.
JENKINS
Page10
3.4. Lợi ích của Jenkins mang lại
 Tất cả với Jenkins hầu như là tự động.
 Giảm thời gian và chi phí cho quá trình phát triển phần mềm.
 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à mọi thứ tự động với:
 Faster.
 Easier.
 Safer.
 Smarter.
3.5. Cài đặt – demo
Sau đây sẽ hướng dẫn việc cài đặt và ứng dụng Jenkins trong việc build và publish 1 ứng dụng windows
aplication (Với công nghệ click one của microsoft cho phép publish một ứng dụng lên một webserver và cho
phép người dùng download và cài đặt phần mềm từ server đó. Một tính năng khác của click one là cho phép
ứng dụng tự động kiểm tra phiên bản và download và cài bản mới nhất nếu có sự đồng ý của người sử dụng)
JENKINS_Tutorial.doc main.build publish-template.html
Page11
4. KẾT LUẬN
4.1. Loại dự án nào nên áp dụng Jenkins?
Dự án phát triển theo mô hình Agile.
Ngoài ra các dự án thường xuyên build hotfix và có quá trình build cấu hình phức tạp (gồm nhiều project liên
quan với nhau và thứ tự các bước build cũng phải chính xác – Thông thường chỉ có một hoặc hai người trong
dự án có thể build và mất rất nhiều thời gian). Thay vì phải mất nhiều thời gian vào việc này chúng ta có thể
chỉ cần cấu hình một lần và mỗi khi build chỉ cần vào Jenkins nhấn build là toàn bộ các quá trình sẽ được
thực hiện theo đúng tuần tự. Hoặc có thể đặt chế độ build tự động.
4.2. Chúng ta kết hợp các công cụ hiện tại đang được sử dụng thông qua Jenkins như thế nào?
Chúng ta có thể kết hợp công cụ quản lý source (SVN), công cụ test tự động (JUnit, NUnit,PhpUnit,..) công
cụ test redmine/mantis , công cụ quản lý test case (testlink – là công cụ quản lý test case có thể kết hợp với
mantis và Jenkins), công cụ build (Ant, Nant, MSBuild,..) để khép kín quy trình tính hợp phần mềm.
Cụ thể quy trình kết hợp các công cụ cho quá trình tích hợp liên tục với Jenkins được đề xuất tại như sau:
Tiến trình được thực hiện theo thứ tự:
- Jenkins tổng hợp source của lập trình viên thông qua SVN.
- Jenkins sử dụng công cụ build (ant,nant, MSBuild) để build ứng dụng
- Jenkins sử dụng công cụ test unit để kiểm tra các unit test case đã pass hay chưa.
Report test case, bug qua (mantis, redmine, teslink)
- Nếu các test case đã pass thì thực hiện tiếp tiến trình publish ứng dụng ra deploy
server thông qua ftp server. Lưu trữ phiên bản code vào reversion server.
- Thông báo thành công thất bại của quá trình build đến đội dự án.
- Bên cạnh đó chúng ta có thể thực hiện các tiến trình phụ trong quá trình build như
(chạy các script SQL (store procedure, function) trong quá trình build với Jenkins)
4.3. Lợi ích mang lại
- Giảm được thời gian, resource cho việc build, test và deploy ứng dụng
JENKINSSVN JUNIT/NU
NIT
ANT/MS
BUILD
MANTIS
DEPLOY
SERVER
REDMINE TESTLINK
REVERSION SERVER
REPORTS
Page12
- Các test case với các công cụ test tự động được tái sử dụng trong suốt quá trình phát
triển sản phẩm.
- Quản lý reversion phiên bản một cách rõ ràng.
- Phát hiện lỗi tích hợp source code dễ dàng và nhanh chóng.
- Minh bạch công khai quá trình phát hiện và xử lý lỗi.
- Giảm thiểu rủi ro trong quá trình phát triển phần mềm khi kết hợp với mô hình phát
triển Agile.
Page13
-
5. TÀI LIỆU THAM KHẢO (References)
Jenkins-the-definitive-guide | John Ferguson Smart
Integrating PHP Projects with Jenkins|Sebastian Bergmann
Jenkins&TestLink|Bruno P. Kinoshita
http://jenkins-ci.org/

Mais conteúdo relacionado

Mais procurados

Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...
Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...
Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...MinhTrnNht7
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecuritySam Bowne
 
Opa gatekeeper
Opa gatekeeperOpa gatekeeper
Opa gatekeeperRita Zhang
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev dayPrasanna Venkatesan
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET FrameworkANURAG SINGH
 
Refactoring Techniques
Refactoring TechniquesRefactoring Techniques
Refactoring TechniquesMayada Ghanem
 
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngThiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngNguyen Minh Quang
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtimeDocker, Inc.
 
Full Stack Vs Mean Stack Vs MERN Stack Comparison & Benefits
Full Stack Vs Mean Stack Vs MERN Stack Comparison & BenefitsFull Stack Vs Mean Stack Vs MERN Stack Comparison & Benefits
Full Stack Vs Mean Stack Vs MERN Stack Comparison & BenefitsAvya Technology Pvt. Ltd.
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow IntroductionDavid Paluy
 
Kerberos authentication
Kerberos authenticationKerberos authentication
Kerberos authenticationSuraj Singh
 
Introduction To Micro Frontends
Introduction To Micro Frontends Introduction To Micro Frontends
Introduction To Micro Frontends Meitar Karas
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnDotnet Open Group
 
Service Discovery In Kubernetes
Service Discovery In KubernetesService Discovery In Kubernetes
Service Discovery In KubernetesKnoldus Inc.
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017Docker, Inc.
 

Mais procurados (20)

Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...
Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...
Python-for-DevOps-Learn-Ruthlessly-Effective-Automation-by-Noah-Gift_-Kennedy...
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development Security
 
Opa gatekeeper
Opa gatekeeperOpa gatekeeper
Opa gatekeeper
 
Micro frontends with react and redux dev day
Micro frontends with react and redux   dev dayMicro frontends with react and redux   dev day
Micro frontends with react and redux dev day
 
Introduction to ,NET Framework
Introduction to ,NET FrameworkIntroduction to ,NET Framework
Introduction to ,NET Framework
 
Refactoring Techniques
Refactoring TechniquesRefactoring Techniques
Refactoring Techniques
 
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộngThiết kế hệ thống E-Commerce yêu cầu mở rộng
Thiết kế hệ thống E-Commerce yêu cầu mở rộng
 
containerd the universal container runtime
containerd the universal container runtimecontainerd the universal container runtime
containerd the universal container runtime
 
Full Stack Vs Mean Stack Vs MERN Stack Comparison & Benefits
Full Stack Vs Mean Stack Vs MERN Stack Comparison & BenefitsFull Stack Vs Mean Stack Vs MERN Stack Comparison & Benefits
Full Stack Vs Mean Stack Vs MERN Stack Comparison & Benefits
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
ZeroMQ
ZeroMQZeroMQ
ZeroMQ
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
Git flow Introduction
Git flow IntroductionGit flow Introduction
Git flow Introduction
 
Kerberos authentication
Kerberos authenticationKerberos authentication
Kerberos authentication
 
Github
GithubGithub
Github
 
Introduction To Micro Frontends
Introduction To Micro Frontends Introduction To Micro Frontends
Introduction To Micro Frontends
 
Mikrotik API
Mikrotik APIMikrotik API
Mikrotik API
 
Kinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vnKinh nghiệm triển khai Microservices tại Sapo.vn
Kinh nghiệm triển khai Microservices tại Sapo.vn
 
Service Discovery In Kubernetes
Service Discovery In KubernetesService Discovery In Kubernetes
Service Discovery In Kubernetes
 
Introduction to Docker - 2017
Introduction to Docker - 2017Introduction to Docker - 2017
Introduction to Docker - 2017
 

Destaque

Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Minh Tri Lam
 
Mixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMinh Tri Lam
 
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐKHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐMinh Tri Lam
 
Nunit framework for .NET application
Nunit framework for .NET applicationNunit framework for .NET application
Nunit framework for .NET applicationMinh Tri Lam
 
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)Minh Tri Lam
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensourceMinh Tri Lam
 
Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)Minh Tri Lam
 
Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version) Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version) Minh Tri Lam
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Minh Tri Lam
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Minh Tri Lam
 
Digital library standard and technology
Digital library standard and technologyDigital library standard and technology
Digital library standard and technologyMinh Tri Lam
 
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICESQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICEMinh Tri Lam
 
ADO .NET Entity framework
ADO .NET Entity frameworkADO .NET Entity framework
ADO .NET Entity frameworkMinh Tri Lam
 
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)Minh Tri Lam
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEMinh Tri Lam
 
Agile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapAgile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapVu Hung Nguyen
 
Test Automation and Continuous Integration
Test Automation and Continuous Integration Test Automation and Continuous Integration
Test Automation and Continuous Integration TestCampRO
 
Giới thiệu redmine(2013)
Giới thiệu redmine(2013)Giới thiệu redmine(2013)
Giới thiệu redmine(2013)Quy Bui
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoVu Hung Nguyen
 
Phương pháp phát triển phần mềm: Truyền thống và Agile
Phương pháp phát triển phần mềm: Truyền thống và AgilePhương pháp phát triển phần mềm: Truyền thống và Agile
Phương pháp phát triển phần mềm: Truyền thống và AgileVu Hung Nguyen
 

Destaque (20)

Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)
 
Mixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid projectMixing asp.net mvc & web form into hybrid project
Mixing asp.net mvc & web form into hybrid project
 
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐKHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
KHẢO SÁT NHU CẦU QUẢN LÝ SỬ DỤNG VÀ CHIA SẺ TÀI NGUYÊN SỐ
 
Nunit framework for .NET application
Nunit framework for .NET applicationNunit framework for .NET application
Nunit framework for .NET application
 
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
MSSQL SERVER 2008 REPLICATION (PEER TO PEER)
 
Digital library opensource
Digital library opensourceDigital library opensource
Digital library opensource
 
Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)Secure coding guide lines (Web Sercurity)
Secure coding guide lines (Web Sercurity)
 
Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version) Joomla CMS framework (1.6 - Old version)
Joomla CMS framework (1.6 - Old version)
 
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)Hướng dẫn lập trình với SCSF phần I (smart client software factory)
Hướng dẫn lập trình với SCSF phần I (smart client software factory)
 
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)Hướng dẫn lập trình với SCSF phần II(smart client software factory)
Hướng dẫn lập trình với SCSF phần II(smart client software factory)
 
Digital library standard and technology
Digital library standard and technologyDigital library standard and technology
Digital library standard and technology
 
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICESQL SERVER BUSINESS INTELLIGENCE  & WINDOWS SERVICE
SQL SERVER BUSINESS INTELLIGENCE & WINDOWS SERVICE
 
ADO .NET Entity framework
ADO .NET Entity frameworkADO .NET Entity framework
ADO .NET Entity framework
 
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)SINGLE SIGN ON (SSO)  WITH SECURITY ASSERTION  MAKUP LANGUAGE (SAML)
SINGLE SIGN ON (SSO) WITH SECURITY ASSERTION MAKUP LANGUAGE (SAML)
 
DBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLEDBLINK BETWEEN MS SQL SERVER & ORACLE
DBLINK BETWEEN MS SQL SERVER & ORACLE
 
Agile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: RecapAgile Vietnam Conference 2016: Recap
Agile Vietnam Conference 2016: Recap
 
Test Automation and Continuous Integration
Test Automation and Continuous Integration Test Automation and Continuous Integration
Test Automation and Continuous Integration
 
Giới thiệu redmine(2013)
Giới thiệu redmine(2013)Giới thiệu redmine(2013)
Giới thiệu redmine(2013)
 
Kanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng caoKanban: Cơ bản và Nâng cao
Kanban: Cơ bản và Nâng cao
 
Phương pháp phát triển phần mềm: Truyền thống và Agile
Phương pháp phát triển phần mềm: Truyền thống và AgilePhương pháp phát triển phần mềm: Truyền thống và Agile
Phương pháp phát triển phần mềm: Truyền thống và Agile
 

Semelhante a Vai trò của Jenkins trong mô hình phát triển phần mềm Agile

Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmNguyễn Anh
 
Quản trị dự án trong công nghệ thông tin
Quản trị dự án trong công nghệ thông tinQuản trị dự án trong công nghệ thông tin
Quản trị dự án trong công nghệ thông tincxbach
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdfDuongDo35
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlMai Mit
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umldlmonline24h
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlAxnet Dung
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thongvantinhkhuc
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Umlhbgfd
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.Nguyễn Anh
 
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website nataliej4
 
Giao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinGiao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinNguyen Patrick
 
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web siteđề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web sitejackjohn45
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmTrần Gia Bảo
 
Cnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhCnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhKy Vo
 
01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptxTunTrung15
 

Semelhante a Vai trò của Jenkins trong mô hình phát triển phần mềm Agile (20)

Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Quản trị dự án trong công nghệ thông tin
Quản trị dự án trong công nghệ thông tinQuản trị dự án trong công nghệ thông tin
Quản trị dự án trong công nghệ thông tin
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng uml
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thong
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Uml
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
 
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượngLuận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
Luận văn: Nghiên cứu và ứng dụng mẫu thiết kế trong phương pháp hướng đối tượng
 
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
 
Giao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinGiao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tin
 
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web siteđề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềm
 
Lecture01
Lecture01Lecture01
Lecture01
 
Cnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhCnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinh
 
Chương 1.pdf
Chương 1.pdfChương 1.pdf
Chương 1.pdf
 
01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx
 
1 gioi thieu httt
1 gioi thieu httt1 gioi thieu httt
1 gioi thieu httt
 

Vai trò của Jenkins trong mô hình phát triển phần mềm Agile

  • 1. GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC VỚI JENKINS Lâm Minh Trí (minhtri.itp@gmail.com) TP.Hồ Chí Minh, ngày 20 tháng 01 năm 2014
  • 2. Page1 MỤC LỤC MỤC LỤC......................................................................................................................................................... 1 1. TỔNG QUAN ............................................................................................................................................... 2 2. GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC ...................................................................................... 2 2.1. Định nghĩa hệ thống tích hợp liên tục (Continuous Integration)............................................................ 2 2.2. So sánh mô hình phát triển phần mềm truyền thống (waterfall) và agile............................................... 4 2.3. Mô hình phát triển phần mềm Agile (với mô hình cụ thể Scrum).......................................................... 6 2.4. Thực tiễn của hệ thống tích hợp liên tục (Practices of Continuous Integration) .................................... 6 2.5. Khó khi áp dụng hệ thống tích hợp liên tục............................................................................................ 7 2.6. Tại sao cần hệ thống tích hợp liên tục? .................................................................................................. 7 3. GIỚI THIỆU JENKINS ................................................................................................................................ 8 3.1. Giới thiệu................................................................................................................................................ 8 3.2. Đặc điểm của Jenkins ............................................................................................................................. 8 3.3. Vai trò của Jenskin trong CI................................................................................................................... 8 3.4. Lợi ích của Jenkins mang lại ................................................................................................................ 10 3.5. Cài đặt – demo...................................................................................................................................... 10 4. KẾT LUẬN ................................................................................................................................................. 11 4.1. Loại dự án nào nên áp dụng Jenkins?................................................................................................... 11 4.2. Chúng ta kết hợp các công cụ hiện tại đang được sử dụng thông qua Jenkins như thế nào? .............. 11 4.3. Lợi ích mang lại.................................................................................................................................... 11 5. TÀI LIỆU THAM KHẢO (References)...................................................................................................... 13
  • 3. Page2 1. TỔNG QUAN Trong số chúng ta có lẽ đã từng thắc mắc với các hệ thống phần mềm cập nhật phiên bản liên tục hàng giờ, hàng ngày thì họ đã làm điều đó như thế nào và tại sao có phiên bản liên tục và có phiên bản stable? Chúng ta thử hình dung trong quy trình phát triển của một opensource, mã nguồn được viết bởi cộng đồng và được tích hợp liên tục vào bất kỳ thời điểm nào trong ngày. Vậy thì làm thế nào họ có thể kiểm soát được lỗi của phần mềm trong khi đó các phiên bản vẫn điều đặn được xuất bản ra cộng đồng? Các quá trình hotfix lỗi và nhận phản hồi từ cộng đồng người sử dụng, cải tiến mở rộng tính năng được lặp lại liên tục. Chúng ta đã quen với việc sử dụng các trong công cụ quản lý source code ( SVN, GIT, VSS,CSV,..), các công cụ quản lý lỗi (redmine, mantis, testlink), các công cụ build (MS build, Nant,…), các công cụ test tự động (Junit, Nunit,CppUnit,..),…Việc kết hợp tất cả các công cụ này thành một quy trình tự động và khép kín sẽ mang lại hiệu quả gì cho chúng ta? Và việc kết hợp này sẽ được thực hiện như thế nào? Phần tiếp theo sẽ phần nào giải đáp các vấn đề trên. 2. GIỚI THIỆU HỆ THỐNG TÍCH HỢP LIÊN TỤC 2.1. Định nghĩa hệ thống tích hợp liên tục (Continuous Integration). • Tích hợp liên tục là một hoạt động phát triển phần mềm mà ở đó các thành viên của một nhóm sẽ tích hợp công việc của họ với nhau liên tục, thường thì các thành viên tích hợp công việc ít nhất mỗi lần trong ngày, dẫn đến có nhiều sự tích hợp trong ngày. Mỗi sự tích hợp như vậy sẽ được kiểm tra bởi một công cụ build tự động (bao gồm test) để phát hiện ra những lỗi tích hợp càng sớm càng tốt. • 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 ).
  • 5. Page4 2.2. So sánh mô hình phát triển phần mềm truyền thống (waterfall) và agile 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 hoặc ít khi 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 sprint. 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 có thể.  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 print sau.  Giảm thiểu rủi ro.
  • 6. Page5 Mô hình: Waterfall and Similar Methodology Others Agile and Similar Methodology Incremental Spiral Cocomo Cocomo II RAD RUP … Minh họa khả năng giảm thiểu rủi ro của mô hình Agile so với Waterfall:
  • 7. Page6 2.3. Mô hình phát triển phần mềm Agile (với mô hình cụ thể Scrum) Có rất nhiều biến thể của Agile để phù hợp với từng dự án cụ thể và phù hợp với điều kiện môi trường phát triển của mỗi công ty. Tuy nhiên tất cả điều dựa trên các mục đích chính của dự án là phát triển và triển khai nhanh chóng sản phẩm đến khách hàng với mức độ hài lòng cao nhất và rủi ro là thấp nhất qua mỗi giai đoạn (hoàn thành đóng gói nhóm chức năng của mỗi giai đoạn). Khách hàng có thể dùng và góp ý về sản phẩm một cách sớm nhấtcó thể. Qua mỗi giai đoạn nhóm dự án có thể hiệu chỉnh rút kinh nghiệm và cải tiến phù hợp với yêu cầu của khách hàng hơn vì vậy ở những giai đoạn sau được kế thừa kinh nghiệm của những giai đoạn trước nên năng suất và hiệu quả công việc của đội dự án được tăng lên, mức độ hài lòng của khách hàng cũng được đáp ứng một cách tốt nhất có thể. Và một trong số mô hình cụ thể của Agile được áp dụng phổ biến hiện nay đó là Scrum. Về chi tiết mô hình này vui lòng tham khảo quy trình sản xuất phần mềm của trung tâm (QT04) 2.4. 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 (tự động 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ính hợp.  Tự động phân phối phiên bản mới đến khách hàng bằng một quy trình tự động khép kín.  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 một cách minh bạch.
  • 8. Page7 2.5. 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 thử 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). 2.6. 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 (phân tích, thiết kế, lập trình khi sản phẩm không đúng yêu cầu hoặc yêu cầu thay đổi).  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.
  • 9. Page8 3. GIỚI THIỆU JENKINS 3.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 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.  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,… 3.2. Đặc điểm của Jenkins  Hỗ trợ đầy đủ nhất các tính năng tự động hóa của hệ thống tích hợp liên tục bằng việc kết hợp giữa các thành phần mở rộng (so với các công cụ khác).  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 (JAVA, .NET, PHP, CPP Ruby,…).  Được sử dụng rộng rãi.  Dễ dàng tùy chỉnh 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í 3.3. Vai trò của Jenskin trong CI  Là 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.
  • 10. Page9  Giúp 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. - Với hệ thống plugin phong phú và đa dạng cho phép chúng ta có nhiều lựa chọn kết hợp và điều tuyệt vời hơn là hầu hết chúng đều là mã nguồn mở miễn phí và tốt nhất hiện nay. JENKINS
  • 11. Page10 3.4. Lợi ích của Jenkins mang lại  Tất cả với Jenkins hầu như là tự động.  Giảm thời gian và chi phí cho quá trình phát triển phần mềm.  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à mọi thứ tự động với:  Faster.  Easier.  Safer.  Smarter. 3.5. Cài đặt – demo Sau đây sẽ hướng dẫn việc cài đặt và ứng dụng Jenkins trong việc build và publish 1 ứng dụng windows aplication (Với công nghệ click one của microsoft cho phép publish một ứng dụng lên một webserver và cho phép người dùng download và cài đặt phần mềm từ server đó. Một tính năng khác của click one là cho phép ứng dụng tự động kiểm tra phiên bản và download và cài bản mới nhất nếu có sự đồng ý của người sử dụng) JENKINS_Tutorial.doc main.build publish-template.html
  • 12. Page11 4. KẾT LUẬN 4.1. Loại dự án nào nên áp dụng Jenkins? Dự án phát triển theo mô hình Agile. Ngoài ra các dự án thường xuyên build hotfix và có quá trình build cấu hình phức tạp (gồm nhiều project liên quan với nhau và thứ tự các bước build cũng phải chính xác – Thông thường chỉ có một hoặc hai người trong dự án có thể build và mất rất nhiều thời gian). Thay vì phải mất nhiều thời gian vào việc này chúng ta có thể chỉ cần cấu hình một lần và mỗi khi build chỉ cần vào Jenkins nhấn build là toàn bộ các quá trình sẽ được thực hiện theo đúng tuần tự. Hoặc có thể đặt chế độ build tự động. 4.2. Chúng ta kết hợp các công cụ hiện tại đang được sử dụng thông qua Jenkins như thế nào? Chúng ta có thể kết hợp công cụ quản lý source (SVN), công cụ test tự động (JUnit, NUnit,PhpUnit,..) công cụ test redmine/mantis , công cụ quản lý test case (testlink – là công cụ quản lý test case có thể kết hợp với mantis và Jenkins), công cụ build (Ant, Nant, MSBuild,..) để khép kín quy trình tính hợp phần mềm. Cụ thể quy trình kết hợp các công cụ cho quá trình tích hợp liên tục với Jenkins được đề xuất tại như sau: Tiến trình được thực hiện theo thứ tự: - Jenkins tổng hợp source của lập trình viên thông qua SVN. - Jenkins sử dụng công cụ build (ant,nant, MSBuild) để build ứng dụng - Jenkins sử dụng công cụ test unit để kiểm tra các unit test case đã pass hay chưa. Report test case, bug qua (mantis, redmine, teslink) - Nếu các test case đã pass thì thực hiện tiếp tiến trình publish ứng dụng ra deploy server thông qua ftp server. Lưu trữ phiên bản code vào reversion server. - Thông báo thành công thất bại của quá trình build đến đội dự án. - Bên cạnh đó chúng ta có thể thực hiện các tiến trình phụ trong quá trình build như (chạy các script SQL (store procedure, function) trong quá trình build với Jenkins) 4.3. Lợi ích mang lại - Giảm được thời gian, resource cho việc build, test và deploy ứng dụng JENKINSSVN JUNIT/NU NIT ANT/MS BUILD MANTIS DEPLOY SERVER REDMINE TESTLINK REVERSION SERVER REPORTS
  • 13. Page12 - Các test case với các công cụ test tự động được tái sử dụng trong suốt quá trình phát triển sản phẩm. - Quản lý reversion phiên bản một cách rõ ràng. - Phát hiện lỗi tích hợp source code dễ dàng và nhanh chóng. - Minh bạch công khai quá trình phát hiện và xử lý lỗi. - Giảm thiểu rủi ro trong quá trình phát triển phần mềm khi kết hợp với mô hình phát triển Agile.
  • 14. Page13 - 5. TÀI LIỆU THAM KHẢO (References) Jenkins-the-definitive-guide | John Ferguson Smart Integrating PHP Projects with Jenkins|Sebastian Bergmann Jenkins&TestLink|Bruno P. Kinoshita http://jenkins-ci.org/