CI/CD Với Gitlab Runner/Jenkins và Docker Compose (phần 2)

Jenkins là gì?

Jenkins là một công cụ mã nguồn mở hỗ trợ tự động hóa server, là một trong những phần mềm được sử dụng rộng rãi nhất hiện nay bởi các lập trình viên trong CI/CD, thường được kết hợp cùng với Git, Docker. Jenkins tự động phát hiện thay đổi trong mã code sau đó thực hiện bước test, deploy lên các server một cách tự động theo các bước mà người dùng đã thiết lập.

Ngoài ra với việc có được một cộng đồng sử dụng đông đảo, Jenkins có rất nhiều plugins hỗ trợ người dùng trong việc tùy biến các chức năng

Setup Jenkins như thế nào?

Sau khi cài đặt Jenkins bạn sẽ có giao diện dashboard như sau:

Setup Jenkins như thế nào?

Bước 1: Khai báo (add) server cần triển khai code (deploy) vào server jenkins.

Ở màn hình trên bạn chọn menu Manage Jenkins -> sau đó chọn Manage Nodes -> New Node

Dao diện hết sức trực quan và dễ dùng. Nếu field chúng ta không biết ý nghĩa hãy click vào icon dấu hỏi ở cuối field. Chúng ta cũng có thể copy lại configuration của một node đã thiết lập trước đó.

>> Tạo CI/CD kết hợp Gitlab Runner và Docker Compose - Phần 1

Một số trường cần lưu ý như Of executors là số tiến trình tối đa mà Jenkins có thể thực hiện build cùng một lúc trên node của bạn. Launch method ở trường này bạn điền các thông tin cần thiết để Jenkins có thể remote đến node của bạn.

Bước 2: tạo Pipeline cho project

Ở bước này mình dùng plugin có tên là Open Blue Ocean. Việc setup hết sức đơn giản. Chọn Classic Item Creation -> Điền tên Job mà bạn muốn Pipe sau đó chọn Multiple Branch Pipeline

Sau khi hoàn thành quá trình tạo pipeline chúng ta sẽ nhận được một giao diện để theo dõi quá trình qua từng Stages từ test đến deploy project của mình trên server vừa khai báo

Cấu hỏi đặt ra là làm sao Jenkins có thể biết được chúng ta muốn deploy trên branch nào? kết hợp với Docker như thế nào? và làm gì ở từng stage. Để làm được điều này chúng ta cần viết một script theo cú pháp mà Jenkins cho trước.

Để khai báo một pipeline trong jenkins, chúng ta tạo ra một script Declarative Pipeline với cú pháp tương tự như ngôn ngữ groovy, với các option linh hoạt và phong phú giúp chúng khai báo một quy trình CI/CD phù hợp với yêu cầu công việc của mình.

Ví dụ declarative pipeline:

pipeline {
    agent any 
    stages {
        stage('Build') { 
            steps {
                // 
            }
        }
        stage('Test') { 
            steps {
                // 
            }
        }
        stage('Deploy') { 
            steps {
                // 
            }
        }
    }
}

Trong triển khai thực tế bạn có thể thiết kế mô hình để phục vụ cho công việc CD/CI của mình một cách rất linh hoạt. Ở đây mình chọn 3 servers:

– Master node:

  • Mục đích: Làm controller, quản lý job ở các node còn lại
  • Yêu cầu: Cài đặt java, jenkins( Xem cài đặt bên dưới), quyền sudo, tạo user jenkins

– Build node:

  • Mục đích: Nhận control từ Master node, chỉ chạy các job với mục đích test
  • Yêu cầu: cài đặt java, có user jenkins, cho phép user jenkins từ Master node ssh đến

– Product node:

  • Mục đích: Nhận control từ Master node, chạy các job trên môi trường product
  • Yêu cầu: có user jenkins, cho phép user jenkins từ Master node ssh qua

Các bạn có thể tham khảo script jenkins ở đây Jenkins.groovy

Trên là các bước sơ lược về việc dùng jenkins để tự động hóa quá trình test, buil và deploy. Các bạn có thắc mắc và góp ý vui lòng comment bên dưới nhé.

Fivestar: 
Average: 5 (1 vote)