Jenkin Là Gì

     
1. Mở đầu

Gần đây, mình mới được trao một task mày mò và tích hòa hợp CI/CD cho dự án công trình đang làm. Nếu như bạn nào sẽ từng khám phá về CI/CD rồi thì có lẽ rằng sẽ thấy sự quan trọng của việc tích đúng theo nó vào trong quá trình trở nên tân tiến phần mềm. Tuyệt nói nôm mãng cầu là nó sẽ phụ trách việc tự động build, chạy chạy thử và triển khai code khi có thay đổi. Sang một tuần ngồi vọc vạch, khám phá trên mạng thì cũng biết được Jenkins gồm một công cụ hoàn toàn có thể hỗ trợ để tạo ra những job chạy CI và CD.

Bạn đang xem: Jenkin là gì

CI/CD - Continuous Intergration/Continuous Delivery

Đầu tiên, nói theo về CI/CD một chút. CI hay Continuous Integration, là cách thức phát triển phần mềm yêu cầu các thành viên của team tích hợp quá trình của họ thường xuyên xuyên, hàng ngày ít tốt nhất một lần. Từng tích hòa hợp được build tự động (bao tất cả cả test) nhằm mục tiêu phát hiện nay lỗi nhanh nhất có thể có thể. Và tất nhiên giúp cho vấn đề tích hợp với phát triển ứng dụng trở yêu cầu nhanh và công dụng hơn.

Tiếp đến, CD hay khá đầy đủ là Continuous Delivery (tạm dịch là bàn giao liên tục), là quy trình triển khai tất cả chuyển đổi về code lên môi trường thiên nhiên test hoặc staging. Continuous Delivery đến phép tự động hóa phần testing ở bên cạnh việc áp dụng unit test, kiểm tra ứng dụng qua những thước đo trước khi triển khai đến khách hàng.

Jenkins là gì?

Là một ứng dụng Web mã nguồn mở được viết bằng Java, nhập vai trò máy chủ build & test của khối hệ thống tích vừa lòng liên tục. Jenkins có thể kết phù hợp được với phần đông các hình thức khác của khối hệ thống tích hợp liên tục với nhiều căn nguyên khác nhau. Không tính ra, cộng đồng sử dụng Jenkins rất lớn nên cũng tương đối dễ vào việc sử dụng và cung cấp khi gặp mặt khó khăn.

2. áp dụng Jenkins để cấu hình CI/CD

Trở lại bài toán đề ra lúc đầu, chi tiết yêu ước như sau: Khi 1 PR mới được tạo, Jenkins sẽ bắt sự kiện với trigger để chạy job CI, CI job đang chạy Unit Test, checkstyle code và report kết quả. Khi PR được (merged), thì job CD vẫn chạy deploy code mới lên server thử nghiệm và chỉ câu hỏi chờ tới lúc có thông báo deploy thành công trên Chatwork là chấm dứt :v.

2.1. Thiết đặt Jenkins

Jenkins được viết bằng Java nên trước khi cài các bạn cần thiết lập Java mang đến máy tính của người tiêu dùng nhé. Bước đầu thôi nào!

wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key showroom -sudo sh -c "echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list"sudo add-apt-repository universesudo apt-get updatesudo apt-get install jenkins -yĐể truy cập vào Jenkins, vào browser cùng nhập showroom http://localhost:8080. Tiếp sau là bước cài đặt cho thứ nhất khởi rượu cồn Jenkins. Nói bình thường cũng không có gì đặc biệt, chỉ gồm bước tải plugin thì cần click vào "Install suggested plugins" thôi.

Ở đây chúng ta còn cần được sử dụng Github webhook để trigger gần như sự khiếu nại như tạo thành PR hoặc merge PR, mà webhook rất cần được có một public domain để hoạt động. Các chúng ta cũng có thể dùng những tool để public cổng 8080 bên trên local thành public domain. Ví như ngrok.com và tuân theo hướng dẫn hoặc chạy lệnh ssh -R 80:localhost:8080 ssh.localhost.run.

2.2. Thông số kỹ thuật CI

Trước hết bọn họ cần biết được lúc nào trên repo có một pull request bắt đầu được sản xuất để chạy CI. Để làm cho được điều này cần nhờ cho một plugin của Jenkins là GitHub Pull Request Builder. Chúng ta sẽ vào phần quản lí lí plugin: Manage Jenkins > Manage Plugins > Tab Available, search và click "Install without restart".

*
Bước 1: chế tạo webhook trên repo: Vào setting webhook, chọn địa chỉ cửa hàng webhook. Tại payload url, điền cùng với format sau: /ghprbhook/ ví dụ: http:/my-domain.com/ghprbhook/. Nội dung type lựa chọn application/json cùng thêm Secret nếu cần. Sau cùng tại mục action chọn Issue comments với Pull requests.

Xem thêm: Top 18 Bản Reloaded Là Gì ? Phân Biệt Reloaded, Repack Và Full

Bước 2: cài đặt cho plugin GitHub Pull Request Builder. Vào setting: Manage Jenkins > Configure System, Thêm credentials (username/password) của tài khoản github mang lại plugin.

Bước 3: tạo thành job mới. Trên mục Github project nhập liên kết của repo vào đó. Tiếp theo, chọn GitHub Pull Request Builder, tích chọn "Use github hooks for build triggering". Vào mục Advance Setting..., nhập whitelist branch khi bao gồm pull request bắt đầu được tạo. Với nếu muốn biến hóa tên hiển thị trên pull request lúc job chạy thì bạn có thể setting trong mục Trigger setup. Thêm kích hoạt "Update commit status during build" cùng nhập tên hiển thị của job vào ô "Commit Status Context".

*
*
*
*
Bước 4: Viết script pipeline mang lại job.

Việc setting vẫn xong, hiện thời hãy thử tạo nên một pull request bên trên repo vào nhánh master và trải nghiệm.

*

2.3. Cấu hình CD

Thật rủi ro là github webhook chưa cung ứng cho chúng ta khi bao gồm sự khiếu nại merge pull request. Vì chưng vậy cần áp dụng plugin Generic Webhook Trigger Plugin và phân tích payload của Github webhook khi bao gồm sự khiếu nại merge. Ở đây, họ cần kiểm soát 2 ngôi trường $.action="closed" và $.pull_request.merged=true.

Bước 1: chế tác một webhook không giống với payload url như sau: /generic-webhook-trigger/invoke?token=my-token, trên mục kích hoạt chọn Pull requests.

Bước 2: tạo thành job mới. ở vị trí Build Trigger, tích vào chọn Generic Webhook Trigger và setting như vào hình bên dưới đây.

Xem thêm: Nghĩa Của Từ Cockpit Là Gì Trong Tiếng Việt? Cockpit Là Gì

*
Bước 3: Viết script cho job.

pipeline { agent any tools maven "mvn3" stages stage("Checkout") when expression return current_status == "closed" && merged == "true" steps echo "Checkout done." stage("Build") when expression return current_status == "closed" && merged == "true" steps echo "Build done." stage("Deploy") when expression return current_status == "closed" && merged == "true" steps echo "Deploy done." stage("Notify") when expression return current_status == "closed" && merged == "true" steps echo "Notify when deploy success." 3. Kết luậnTrên phía trên là bài viết hướng dẫn các cấu hình, tích phù hợp CI/CD bởi Jenkins vào project. Rất mong mỏi nhận được sự góp ý và share những chủ ý thêm của mọi người. Thank all!