Professional Documents
Culture Documents
Nhom11ThePhantomThieves HoHuyPhuc
Nhom11ThePhantomThieves HoHuyPhuc
LỜI MỞ ĐẦU 6
CHƯƠNG 1. TỔNG QUAN 7
CHƯƠNG 2. JENKINS: GIỚI THIỆU VÀ ỨNG DỤNG 8
2.1. Jenkins là gì? 8
2.2. Nguồn gốc của Jenkins 9
2.3. Cài đặt Jenkins 9
2.3.1. Windows 9
2.3.2. War file 13
2.4. Mở khóa Jenkins 13
2.6 Tính năng cơ bản trong Jenkins 19
2.6.1. Tạo job 19
2.6.2. Tích hợp Jenkins và Github 25
2.7. Tính năng mở rộng: Jenkins Pipeline 29
2.7.1. Jenkins Pipeline là gì? 29
2.7.2. Jenkinsfile là gì? 29
2.7.3. Các bước tạo và thực thi Jenkins Pipeline từ Jenkinsfile lưu trữ trên git/Bitbucket 31
CHƯƠNG 3. LAB THỰC HÀNH 35
3.1. Các bài lab 35
3.2. Q&A 40
4.1. Đánh giá ưu điểm của Jenkins 42
4.2. Đánh giá nhược điểm của Jenkins 42
4.3. Kết luận 43
TÀI LIỆU THAM KHẢO 44
DANH MỤC HÌNH ẢNH
Bộ môn Kiểm thử phần mềm cơ bản là môn học thú vị, vô cùng bổ ích và có tính
thực tế cao. Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của
sinh viên. Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực
tế còn nhiều bỡ ngỡ. Mặc dù nhóm đã cố gắng hết sức nhưng chắc chắn bài tiểu
luận khó có thể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác, kính
mong cô xem xét và góp ý để bài tiểu luận của nhóm em được hoàn thiện hơn.
Nhóm Phantom Thieves xin chân thành cảm ơn!”
CHƯƠNG 1. TỔNG QUAN
1.1. Giới thiệu
Trong xã hội hiện đại ngày nay, khi công nghệ thông tin lên ngôi và phát triển liên
tục mạnh mẽ, sinh hoạt chúng ta hằng ngày đều gắn liền với việc sử dụng các thiết
bị điện tử nhằm hỗ trợ cho công việc, sinh hoạt hay cả các hoạt động vui chơi giải
trí. Hầu như bất kì thiết bị hay ứng dụng nào đều cũng phải trải qua một quá trình
lập trình và được kiểm thử bởi tester trước khi sản phẩm đến tay người dùng.
Để hỗ trợ cho công việc kiểm thử, người tester cần nhiều công cụ khác nhau để
thực hiện công việc một cách tốt nhất.Nhóm em thực hiện đề tài này nhằm giới
thiệu một công cụ được được rất nhiều tester tin dùng và là một trong những công
cụ nổi tiếng nhất hiện nay – Công cụ tự động hóa mã nguồn mở Jenkins.
Tìm hiểu, nghiên cứu cách cài đặt và điều kiện để chạy công cụ.Giới thiệu các tính
năng cơ bản,nâng cao và phương thức hoạt động của Jenkins. Đồng thời hướng dẫn
cách sử dụng và ứng dụng vào các minh họa thực tế. Nhận xét và đánh giá những
ưu nhược điểm của Jenkins trong quá trình ứng dụng thử nghiệm công cụ này.
Giúp người đọc nhận biết và hiểu rõ công cụ này. Giúp tester học được cách sử
dụng và phát huy được tối đa các ưu điểm đồng thời hạn chế được các điểm yếu
của Jenkins.
CHƯƠNG 2. JENKINS: GIỚI THIỆU VÀ ỨNG DỤNG
2.1. Jenkins là gì?
Jenkins được hiểu như là một mã nguồn mở phục vụ cho việc vận hành các chức
năng tích hợp liên tục. Ngoài ra Jenkins còn có thể xây dựng các tác vụ dạng tự
động hóa. Jenkins cho phép người dùng tích hợp lại các Jenkins từ những member
khác nhau trong team. Từ đó rút ra được một hệ thống theo dõi và kiểm tra quá
trình hoạt động và các trạng thái tức thời thông qua các bước kiểm thử. Hoạt động
này giúp cho lập trình viên nhanh chóng phát hiện những lỗi sai trong phần mềm
để đưa ra cách khắc phục tối ưu nhất.
Để khắc phục tình trạng này, ông đã phát minh ra một phần mềm tên là Hudson với
sức năng tự động hóa để phát hiện ra các lỗi sai của code trước khi đưa vào deploy.
Hudson trở nên vô cùng thịnh hành và phổ biến trong thời bấy giờ.
Khi Sun được Oracle mua lại, Jenkins được forked từ Hudson và phát triển như
một phần mềm độc lập. Sau này Jenkins và Hudson tồn tại song song. Tuy vậy nhờ
những cải tiến cấp thiết phù hợp với thời đại, Jenkins trở nên phổ biến hơn rất
nhiều.
Hình 6. Install
Trong quá trình cài đặt, một hộp thoại thông báo có thể bật lên để thông báo cho
người dùng biết rằng để thiết lập hoàn chỉnh, hệ thống sẽ được khởi động lại khi
kết thúc cài đặt hiện tại. Nhấp vào “OK” khi hộp thoại thông báo hiện lên
Hình 7. Thông báo khi cài đặt
● Tải xuống tệp Jenkins WAR ổn định mới nhất vào thư mục thích hợp trên
máy của bạn.
● Mở cửa sổ terminal / command prompt vào thư mục tải xuống.
● Chạy lệnh java -jar jenkins.war.
● Duyệt đến localhost: 8080 và đợi cho đến khi trang “Unlock Jenkins” xuất
hiện.
● Tiếp tục với “Post-installation setup wizard” bên dưới.
Bạn có thể thay đổi cổng bằng cách chỉ định tùy chọn --httpPort khi bạn chạy java
-jar lệnh jenkins.war. Ví dụ: để làm cho Jenkins có thể truy cập thông qua cổng
9090, sau đó chạy Jenkins sử dụng lệnh:
+ Bước 1: Sau khi hoàn tất quá trình cài đặt Jenkins, một tab trình duyệt sẽ bật lên
yêu cầu nhập mật khẩu Quản trị viên ban đầu. Để truy cập Jenkins, cần truy cập
vào đường dẫn sau trong trình duyệt web của mình: http://localhost:8080
Nếu có thể truy cập thành công vào URL ở trên, thì nó xác nhận rằng Jenkins đã
được cài đặt thành công trong hệ thống của bạn.
+ Jenkins hoàn toàn mở, ai cũng có thể access vào nếu biết địa chỉ. Do đó để thiết
lập an toàn cho Jenkins chúng ta sử dụng trong Manage Jenkins. Đầu tiên các bạn
có thể tạo user acesss vào jenkins bằng Manage Jenkis -> Manage User -> create
user
● Post-build Actions: Phần này ta sẽ add Cucumber Reports, để sau khi chạy
test sẽ xuất report cho chúng ta.
Để Run job sau khi config, các bạn bấm nút Build Now để chạy job đó
+ Khi mỗi lần ta push code lên Git repository, jenkins sẽ nhập được request và
build code
Hình 33. Build History
2.7. Tính năng mở rộng: Jenkins Pipeline
2.7.1. Jenkins Pipeline là gì?
Jenkins Pipeline là một bộ plugin hỗ trợ việc triển khai và tích hợp CD theo kiểu
pipeline (bao gồm tập hợp quy trình với các tác vụ liên quan với nhau và được thực
hiện một cách tuần tự theo thứ tự đã quy định). Jenkins Pipeline được khai báo trên
chứa danh sách các công việc mà pipeline sẽ thực hiện, được lưu trữ trên server
+ Sau khi thực hiện xong các tác vụ, “dọn dẹp” workspace
+ Trường agent dùng để khai báo môi trường sẽ thực hiện. Nếu cấu hình là “any”
thì Jenkins sẽ sử dụng bất kỳ agent nào hiện có trên hệ thống.
+ Trường environment{} dùng để khai báo các biến môi trường cần thiết.
+ Trường stages{} dùng để khai báo các “giai đoạn” (stage) con bên trong
pipeline.
● Trường stage(‘Checkout: Code’) {} sẽ thực hiện việc tạo thư mục và clone
code từ git đã được chỉ định.
● Trường stage(‘Yum: Updates’) {} sẽ thực hiện việc thiết lập quyền truy cập
và thực thi đoạn script được chỉ định.
+ Trường post{} sẽ được thực thi sau khi các stage hoàn tất các công việc được chỉ
định. Trong Jenkinsfile trên, sau khi các stage đã thực hiện (kể cả không thành
công), workspace sẽ được xóa để tránh Jenkins bị lỗi trong lần thực thi pipeline
tiếp theo.
Lưu ý:
+ Tập tin Jenkinsfile cần được đặt ở thư mục root của repository khi lưu trữ trên
git/Bitbucket.
+ Tính năng pipeline có thể sẽ không tích hợp sẵn trên Jenkins trong một số trường
hợp. Bạn có thể cài đặt thêm tính năng này trong tính năng Manage Jenkins.
2.7.3. Các bước tạo và thực thi Jenkins Pipeline từ Jenkinsfile lưu trữ trên
git/Bitbucket
Yêu cầu: Đã cài đặt các plugin sau:
Bitbucket Plugin
Pipeline
Git
+ Chọn “Pipeline script from SCM” ở mục “Advanced Project Options” (ở cuối
trang hoặc tab “Advanced Project Options“).
+ Thêm “credentials” để kết nối đến git repo nếu có. Sau đấy nhấn “Save” để lưu
thông tin lại
Hình 38. Pipeline: Advanced Project Options
- Bước 1:Nhấp vào nút Manage Jenkins trên bảng điều khiển Jenkins:
- Bước 4: Sau khi các plugin được cài đặt, hãy đi tới Manage Jenkins trên
bảng điều khiển Jenkins của bạn. Bạn sẽ thấy được các plugin của mình
được hiển thị trong danh sách plugin như sau
- Bước 2: Nhập tên công việc, chọn 2 loại công việc và nhấp vào OK. Chúng
tôi sẽ tạo ra một dự án Freestyle project làm ví dụ
- Bước 3: Sau khi bạn nhấp vào OK, trang sẽ được chuyển hướng đến form
dự án. Tại đây bạn cần nhập thông tin dự án.:
- Bước 4: Bạn sẽ thấy tùy chọn Git trong tab Source Code Management nếu
plugin Git của bạn đã được cài đặt trong Jenkins.
- Bước 5: Nhập URL kho lưu trữ Git (Git repository) để lấy code từ Github.
- Bước 6: Bạn có thể nhận được thông báo lỗi lần đầu tiên bạn nhập URL kho
lưu trữ Git
Điều này xảy ra nếu máy bạn chưa cài đặt Git. Để cài đặt Git trong máy cục
bộ của bạn, hãy truy cập https://git-scm.com/downloads
Tải file cài đặt Git thích hợp cho hệ điều hành của bạn, trong trường hợp này
là Windows và cài đặt nó vào máy cục bộ chạy Jenkins của bạn. Hoàn thành
hướng dẫn trên màn hình để cài đặt Git
- Bước 7: Bạn có thể thực thi các kho lưu trữ Git trong Jenkins sau khi cài đăt
Git. Để kiểm tra xem nó đã được cài đặt thành công vào hệ thống của bạn
hay chưa, hãy mở cửa sổ dòng lệnh, gõ “Git” và nhấn Enter. Bạn sẽ thấy
những tùy chọn khác nhau xuất hiện cho Git.
- Bước 8: Khi bạn đã có mọi thứ, hãy them URL Git vào Jenkins. Bạn sẽ
không thấy bất kì thông báo lỗi nào cho tích hợp Jenkins Git:
Git đã được cấu hình đúng trên hệ thống của bạn.
3.2. Q&A
1.Thông tin của các lần build nằm ở danh mục nào ?
a) Build history
b) Console Output
c) Dashboard
d) Settings
Giải pháp : Thông tin sẽ được hiển thị ở dạng các thanh trạng thái, các lần build sẽ
hiển thị ở “Build History”. Nếu quá trình Build thành công thì sẽ đánh số thứ tự
các lần thực hiện cùng màu “xanh dương”. Còn nếu build thất bại thì sẽ là ‘màu
đỏ‘.
a. Kiểm tra đầu ra của console để tìm kiếm các thay đổi file bị thiếu.
b. Dọn dẹp và cập nhật local workspace.
c. Kiểm tra cấu hình project/job
d. Tất cả các ý trên.
Giải pháp: Người dùng cần kiểm tra đầu ra của console và tìm các file bị thiếu khi
chạy chương trình. Nếu vẫn không tìm ra vấn đề tốt nhất ta nên dọn dẹp và cập
nhật local workspace.
Có rất nhiều cách để đảm bảo an ninh ở mức cao nhất khi nói đến Jenkins, nhưng
một số trong những cách (nhưng không giới hạn - có thể tìm hiểu thêm ở những
hướng dẫn Jenkins tutorial khác) đáng chú ý hơn là giữ an ninh toàn cầu, chạy
kiểm tra bảo mật, giữ cho cơ sở dữ liệu được bảo vệ ở mức vật lý (tránh người tiếp
cận trái phép), v.v. An ninh mạng đang trở thành một vấn đề cũng được rất quan
tâm và kiến thức về an ninh mạng cũng có thể sẽ xuất hiện trong các câu hỏi phỏng
vấn về Jenkins.
Có rất nhiều cách để đảm bảo an ninh ở mức cao nhất khi nói đến Jenkins, nhưng
một số trong những cách (nhưng không giới hạn - có thể tìm hiểu thêm ở những
hướng dẫn Jenkins tutorial khác) đáng chú ý hơn là giữ an ninh toàn cầu, chạy
kiểm tra bảo mật, giữ cho cơ sở dữ liệu được bảo vệ ở mức vật lý (tránh người tiếp
cận trái phép), v.v. An ninh mạng đang trở thành một vấn đề cũng được rất quan
tâm và kiến thức về an ninh mạng cũng có thể sẽ xuất hiện trong các câu hỏi phỏng
vấn về Jenkins.
5.Tại sao nên sử dụng Tích hợp liên tục (CI) với Jenkins?
Tình huống: Chắc rằng tất cả các bạn đều biết đến điện thoại Nokia cũ. Nokia đã
từng thực hiện một quy trình gọi là build hàng đêm. Sau nhiều commit từ các nhà
phát triển khác nhau trong ngày, phần mềm được build hàng đêm. Vì phần mềm
chỉ được build một lần trong ngày nên việc cô lập, xác định và sửa lỗi trong một
codebase lớn là một điều rất khó khăn.
Cách khắc phục:
Sau đó, họ đã áp dụng cách tiếp cận tích hợp liên tục (CI). Phần mềm được build
và thử nghiệm ngay sau khi một nhà phát triển commit code. Nếu bất kỳ lỗi nào
được phát hiện, nhà phát triển tương ứng có thể nhanh chóng sửa chữa lỗi đó.
CHƯƠNG 4. ĐÁNH GIÁ - KẾT LUẬN
- Cho đến nay khoảng 280 ticket đã được đóng và dự án phát hành ổn định ba
tháng một lần.
- Khi công nghệ phát triển, Jenkins cũng vậy. Cho đến nay Jenkins đã có khoảng
320 plugin được xuất bản trong cơ sở dữ liệu plugin của mình. Với các plugin,
Jenkins thậm chí còn trở nên mạnh mẽ hơn và nhiều tính năng hơn.
- Jenkins cũng hỗ trợ kiến trúc dựa trên đám mây để bạn có thể triển khai Jenkins
trên các nền tảng dựa trên đám mây.
- Lý do tại sao Jenkins trở nên phổ biến là nó được tạo ra bởi một nhà phát triển
dành cho các nhà phát triển.
- Cài đặt Jenkins khá dễ dàng và đơn giản nhưng production lại gây những khó
khăn cho người sử dụng. Bởi vậy, việc triển khai pipeline bằng Jenkinsfile sẽ đòi
hỏi phải lập trình bằng các ngôn ngữ khai báo riêng của nó.
- Hệ thống open source là một trong những kiến trúc đơn máy chủ, nó sẽ giúp cho
việc cài đặt trở nên dễ dàng hơn. Mặc dù vậy, nó có thể giới hạn được tài nguyên
của máy tính, máy ảo hoặc container. Khi đó, Jenkins lại không cho phép liên kết
giữa những máy chủ nếu như nó có thể gây ảnh hưởng đến hiệu năng.
- Jenkins thường hoạt động dựa vào các kiến trúc, công nghệ Java cũ và đặc biệt là
các servlet và Maven.
- Giao diện của nó đã lỗi thời và không thân thiện với người dùng so với xu hướng
giao diện người dùng hiện tại.
- Mặc dù Jenkins được nhiều nhà phát triển yêu thích, nhưng việc duy trì nó không
dễ dàng. Vì Jenkins chạy trên một máy chủ và yêu cầu một số kỹ năng như quản trị
viên máy chủ để giám sát hoạt động của nó.
- Một trong những lý do tại sao nhiều người không triển khai Jenkins là do nó khó
cấu hình.
- Tích hợp liên tục (CI) thường xuyên bị hỏng do một số thay đổi cài đặt nhỏ. Tích
hợp liên tục sẽ bị tạm dừng và do đó cần một số nhà phát triển chú ý.
- Jenkins là một opensource dùng để thực hiện chức năng tích hợp liên tục (gọi là
CI – Continuous Integration) và xây dựng các tác vụ tự động hóa. Nó tích hợp các
source code của các members trong team lại nhanh chóng một cách liên tục, theo
dõi sự thực thi và trạng thái thông qua các bước kiểm thử (Integration test, units
test). Tất nhiên là nhằm giúp sản phẩm chạy ổn định.
- Cho phép lưu trữ thông tin đăng nhập trong Jenkins. Cung cấp một API chuẩn
hóa cho các plugin khác để lưu trữ và truy xuất các loại thông tin xác thực khác
nhau.
- Jenkins giúp tự động hóa các quy trình trong phát triển phần mềm, hiện nay được
gọi theo thuật ngữ tích hợp liên tục. Jenkins là một phần mềm dạng server, chạy
trên nền serlver với sự hỗ trợ của Apche Tomcat. Nó hỗ trợ hầu hết các phần mềm
quản lý mã nguồn phổ biến hiện nay như Git, Maven, Gradle