#

Jenkins là gì? Đặc điểm và cách thức hoạt động của Jenkins

Để tạo ra các job chạy CI/CD kỹ sư và lập trình viên cần đến sự hỗ trợ của công cụ Jenkins. Mặc dù phần mềm này được sử dụng khá phổ biến nhưng số người hiểu rõ về nó rất hạn chế. Bài viết dưới đây của BKHOST sẽ thông tin chi tiết từ A->Z những kiến thức liên quan tới Jenkins mà bạn nên biết.

Jenkins là gì?

Jenkins la gi

Jenkins là một phần mềm tự động hóa thiết lập môi trường phân phối liên tục (CI/CD) và tích hợp liên tục cho kho mã nguồn và mọi tổ hợp ngôn ngữ bằng cách sử dụng pipeline (đường ống).

Siêu khuyến mãi tên miền .XYZ tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký mới tên miền .XYZ: Giảm tới hơn 80% – chỉ còn 59k/năm đầu (Giá gốc: 279k/năm).

Đăng ký ngay:

tên miền xyz

Jenkins cung cấp cho bạn cách thức nhanh, mạnh để tích hợp các nhánh riêng lẻ của code thành một nhánh chính. Đồng thời bằng các bước kiểm tra như Integration test, và unit test Jenkins sẽ theo dõi quá trình thực thi, trạng thái triển khai của nhiều mã nguồn giúp chúng hoạt động ổn định.

Hudson và Jenkins

  • Kohsuke Kawaguchi một trong những nhà phát triển Java tại công ty Sun. Vào năm 2004, ông đã ra mắt máy chủ tự động hóa cho Java với tên gọi là Hudson. Dạng mã nguồn này từ khi xuất hiện đã phổ biến tại Sun và những công ty khác.
  • Năm 2011, giữa Oracle (đã mua lại Sun) và cộng đồng mã nguồn mở Hudson độc lập diễn ra một cuộc tranh chấp quyết liệt. Kết quả sau cùng là sự có mặt của Jenkins (được tách ra từ Hudson).
  • Năm 2014, Kawaguchi – nhà sáng lập Jenkins chính thức trở thành CTO của CloudBees (Công ty phần mềm cung cấp sản phẩm dựa trên nền tảng Jenkins).
  • Cả Hudson và Jenkins tồn tại song song với nhau một thời gian dài. Tuy nhiên thực tế cho thấy Jenkins hoạt động tích cực hơn nhiều so với Hudson. Vào ngày 31 tháng 01 năm 2020, mã nguồn Hudson chính thức bị đóng.
  • Năm 2020, Kawaguchi rời khỏi CloudBees để làm việc ở công ty chính anh xây dựng. Mặc dù chính thức rút khỏi Jenkins nhưng lập trình viên này vẫn giữ vai trò cố vấn cho CloudBees.

Jenkins tự động hóa

Qua nhiều năm phát triển, Jenkins đã trở thành máy chủ tự động hóa mã nguồn mở hàng đầu thế giới với khoảng 1.600 plug-in. Nếu ban đầu Jenkins chỉ thực hiện những quy trình đơn giản thì nay với 1.600 plug-in mã nguồn này đã thực hiện ở nhiều lĩnh vực. Cụ thể đó là nền tảng, quản trị và quản lý người dùng, giao diện người dùng, quản lý xây dựng.

Jenkins hoạt động như thế nào?

Các gói cài đặt ở các hệ điều hành dưới dạng Homebrew, hình ảnh Docker, mã nguồn và các gói lưu trữ WAR được cung cấp cho Jenkins. Mã nguồn dùng cho Jenkins chủ yếu là Java với những tệp như Ruby, Groovy và Antlr.

Người dùng có thể độc lập chạy Jenkins WAR. Ngoài ra bạn cũng sử dụng nó dưới dạng một servlet trong một máy chủ có ứng dụng Java ví dụ như Tomcat. Với cả hai cách nói trên, Jenkins đều tạo giao diện cho người dùng web và chấp nhận các lệnh gọi tới API REST.

Lần đầu tiên chạy Jenkins nó sẽ tạo ra một tài khoản quản trị cùng một mật khẩu ngẫu nhiên khá dài. Khi đó bạn hãy paste mật khẩu Jenkins tạo ra vào website ban đầu của nó để giải mã và mở khóa.

Các Plugin trong Jenkins

Ngay khi cài đặt Jenkins thành công, Jenkins cho phép bạn lựa chọn plugin có sẵn hoặc plugin của riêng bạn.

Plugin trong Jenkins-1

Chọn được bộ trình cắm rồi bạn hãy click vào nút Install thì chúng sẽ được Jenkins thêm vào.

Plugin trong Jenkins-2

Trên màn hình chính Jenkins sẽ hiển thị các build queue hiện tại và trạng thái executor. Bên cạnh đó nó cũng cung cấp các liên kết để tạo ra mục mới, chế độ xem tùy chỉnh, quản lý cho người dùng, xem lại lịch sử xây dựng, chế độ xem tùy chỉnh, quản lý thông tin đăng nhập và quản lý Jenkins.

Plugin trong Jenkins-3

Đối với một mục Jenkins mới thì có thể là một trong sáu loại công việc nói trên cùng với một thư mục nhằm mục đích sắp xếp logic các loại thư mục nhỏ bên trong.

Plugin trong Jenkins-4

Ở trang Manage Jenkins (quản lý Jenkins) bạn có thể làm 18 điều trong đó bao gồm các tùy chọn mở giao diện dòng lệnh. Mặc dù vậy, bạn nên cân nhắc lại việc sử dụng các pipeline và quy trình công việc nâng cao được xác định của các tập lệnh.

Plugin trong Jenkins-5

Jenkins Pipeline

Jenkins Pipeline

Có được cấu hình Jenkins bạn sẽ được Jenkins hỗ trợ để tạo dựng một số dự án của riêng mình. Sử dụng giao diện người dùng web để tạo ra các tệp là cách thức truyền thống khá quen thuộc. Tuy nhiên phương pháp hay nhất hiện nay là tạo một tập lệnh đường dẫn theo kiểu pipeline có tên là Jenkins Pipeline. Quy trình này được thực hiện một cách tuần tự được định sẵn, khi đó Jenkins Pipeline sẽ được khai báo trên một tập tin với tên Jenkinsfile. Hình ảnh bên dưới là một biểu mẫu web cấu hình cho một Pipeline nhiều nhánh:

Jenkins Pipeline-1

Như vậy có thể thấy trong cài đặt Jenkins cơ bản các nguồn nhánh cho Pipeline có thể là các kho lưu trữ Git hoặc Subversion, bao gồm cả GitHub. Bạn chỉ cần thêm các trình cắm thích hợp và khởi động lại Jenkins khi cần các loại kho lưu trữ khác.

Dưới đây là ví dụ về ba giai đoạn của một đường dẫn khai báo được bắt đầu bằng một Pipeline khối, xác định một agent và định nghĩa stages gồm tệp thực thi steps:

pipeline {
    agent any

    stages {
        stage(‘Build’) {
            steps {
                echo ‘Building..’
            }
        }
        stage(‘Test’) {
            steps {
                echo ‘Testing..’
            }
        }
        stage(‘Deploy’) {
            steps {
                echo ‘Deploying....’
            }
        }
    }
}

Pipeline là khối bên ngoài bắt buộc, agent là vị trí nơi bạn muốn chạy pipeline còn any cho biết sử dụng bất kỳ tác nhân có sẵn để chạy pipeline. Một vùng chứa có thể được khai báo bởi một tác nhân cụ thể, ví dụ:
agent {
    docker {
        image ‘maven:3-alpine’
        label ‘my-defined-label’
        args  ‘-v /tmp:/tmp’
    }
}

Một hoặc nhiều chỉ thị giai đoạn được chứa đựng bởi stages. Ba giai đoạn trong ví dụ trên là xây dựng, kiểm tra và triển khai.

Steps làm công việc thực tế. Ở ví dụ trên các bước chỉ in tin nhắn. Một bước xây dựng hữu ích hơn có thể giống như sau:

pipeline {
    agent any

    stages {
        stage(‘Build’) {
            steps {
                sh ‘make’
                archiveArtifacts artifacts: ‘**/target/*.jar’, fingerprint: true
            }
        }
    }
}

Chúng tôi đang gọi make là một trình bao, bất kỳ tệp JAR được tạo ra cũng được lưu trữ vào kho lưu trữ Jenkins.

Các hành động được chạy ở cuối giai đoạn hoặc quá trình chạy Pipeline đều được xác định bởi post.

Ví dụ như Jenkinsfile ở dưới đây sau giai đoạn kiểm tra sẽ luôn chạy JUnit và chỉ gửi vào email trong trường hợp Pipeline bị lỗi.

pipeline {
    agent any
    stages {
        stage(‘Test’) {
            steps {
                sh ‘make check’
            }
        }
    }
    post {
        always {
            junit ‘**/target/*.xml’
        }
        failure {
            mail to: team@example.com, subject: ‘The Pipeline failed :(‘
        }
    }
}

Blue Ocean – giao diện mới của Jenkins

Blue Ocean là trải nghiệm tuyệt vời cho bạn khi muốn giao diện Jenkins trở nên mới mẻ, độc đáo. Bạn có thể thêm Blue Ocean vào cài đặt Jenkins hiện có, lúc đó màn hình chính của Jenkins sẽ có thêm biểu tượng sóng xanh đại dương và dòng chữ “Open Blue Ocean”.

Blue Ocean-1

Bạn có thể mở Blue Ocean trực tiếp bằng cách nhấp vào “Open Blue Ocean” ở thanh điều hướng thuộc giao diện Jenkins. Blue Ocean thân thiện với người dùng và giúp họ truy cập thông tin nhanh chỉ với vài cú nhấp chuột.

Blue Ocean-2

Jenkins Docker

Ngoài phân phối bởi WAR, Jenkins còn được cung cấp dưới dạng hình ảnh Docker. Quy trình này được thực hiện đơn giản với các bước cụ thể:

  • Bước 1: Chọn loại SCM.
  • Bước 2: Cung cấp URL và thông tin đăng nhập.
  • Bước 3: Tạo đường dẫn từ một kho lưu trữ duy nhất hoặc quét tất cả các kho lưu trữ có trong tổ chức.

Ví dụ dưới đây chúng tôi đang chạy hình ảnh Blue Ocean Docker đi kèm với đó là một vài plugin dịch vụ Git (cài đặt ngoài danh sách mặc định).

Jenkins Docker-1

Plugin Blue Ocean sẽ hiển thị trạng thái của chúng sau khi bạn cài pipeline. Để xem các giai đoạn và các bước bạn có thể phóng to từng kênh:

Jenkins Docker-2

Bên cạnh đó bạn cũng có thể phóng to các nhánh trên và dưới:

Jenkins Docker-3

Jenkins Docker-4

Tại sao sử dụng Jenkins?

Jenkins là một công cụ mã nguồn mở mang đến vô số những lợi ích tuyệt vời cho người dùng. Điểm đặc biệt đầu tiên là nó rất dễ cài đặt và có khoảng 1.600 plug-in để bạn làm việc một cách nhanh chóng, đơn giản. Mặt khác Jenkins được xây dựng bằng Java nên có thể di động đến các nền tảng chính.

Jenkins Pipeline là trình cắm hỗ trợ cho hai trường hợp sử dụng phân phối liên tục và tích hợp liên tục. Jenkins đã và đang tham gia hỗ trợ cho nhiều dự án Java ví dụ như Maven, Ant, Junit, Nexus và Artifactory.

Jenkins cho CI/CD

Bằng cách sử dụng pipeline (đường ống), Jenkins thực hiện chức năng tích hợp thường xuyên (CI) và chuyển giao liên tục (CD). Các source code của các thành viên trong team được jenkins tích hợp nhanh chóng, liên tục, theo dõi trạng thái và sự thực thi thông qua các bước kiểm thử.

Tổng kết về Jenkins

Bài viết trên chúng tôi đã tổng hợp những thông tin quan trọng liên quan tới mã nguồn Jenkins. Hy vọng với những gì tham khảo được bạn sẽ có thêm kiến thức về Jenkins cũng như hiểu rõ về lịch sử hình thành và cách mà nó hoạt động. Hãy thử tìm hiểu phần mềm này vì nếu bạn ứng dụng được nó thì việc xử lý source code sẽ trở nên rất đơn giản.

Nếu bạn bất cứ câu hỏi nào liên quan đến Jenkins hoặc muốn tìm hiểu những công cụ khác dùng để xử lý code hiệu quả, hãy để lại ở bên bình luận bên dưới, BKHOST sẽ trả lời bạn trong thời gian sớm nhất.

P/s: Bạn cũng có thể truy cập vào Blog của BKHOST để đọc thêm các bài viết chia sẻ kiến thức về lập trình, quản trị mạng, website, domain, hosting, vps, server, email,… Chúc bạn thành công.

Đăng ký tên miền .VN tại BKHOST

BKHOST đang có chương trình khuyến mãi cực tốt dành cho khách hàng đăng ký tên miền .VN:

  • Giảm ngay 140k.
  • Miễn phí 100% dịch vụ khởi tạo tên miền .VN

Còn rất nhiều tên miền .VN đẹp đang chờ bạn. Nhanh tay sở hữu ngay hôm nay trước khi đối thủ của bạn nhắm tới.

đăng ký tên miền vn

Tôi là Trịnh Duy Thanh, CEO & Founder Công ty Cổ Phần Giải Pháp Mạng Trực Tuyến Việt Nam - BKHOST. Với sứ mệnh mang tới các dịch vụ trên Internet tốt nhất cho các cá nhân và doanh nghiệp trong nước và quốc tế, tôi luôn nỗ lực hết mình nâng cấp đầu tư hệ thống phần cứng, nâng cao chất lượng dịch vụ chăm sóc khách hàng để đem đến những sản phẩm hoàn hảo nhất cho người tiêu dùng. Vì vậy, tôi tin tưởng sẽ đem đến các giải pháp CNTT mới nhất, tối ưu nhất, hiệu quả nhất và chi phí hợp lý nhất cho tất cả các doanh nghiệp.
Bình luận

Thanh toán linh hoạt

Chúng tôi chấp nhận thanh toán như ATM, Visa, Internet Banking, Paypal, Baokim, Ngân lượng

Gọi ĐT tư vấn ngay
Chat ngay qua Zalo
Chat ngay qua Messenger