Thursday, November 21, 2024

[Jenkins] Jenkins Pipeline

-

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 một tập tin được gọi là Jenkinsfile.

Jenkinsfile là phần “lõi” của Jenkins Pipeline, được viết dựa trên cú pháp của DSL (Domain Specific Language) với ngôn ngữ chính là: Groovy DSL. Tập tin này 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 Jenkins hoặc trên repository của git/Bitbucket.

Jenkinsfile này sẽ thực hiện các tác vụ sau:

  • Thiết lập các biến môi trường.
  • Pull code từ git repo được chỉ định.
  • Thiết lập Jenkins workspace.
  • Thực thi đoạn script được chỉ định.
  • Sau khi thực hiện xong các tác vụ, “dọn dẹp” workspace.

Nội dung trong Jenkinsfile trên bao gồm:

  • pipeline là thành phần bắt buộc dùng để khai báo pipeline trong Jenkinsfile.
  • 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.
  • environment dùng để khai báo các biến môi trường cần thiết.
  • stages dùng để khai báo các “giai đoạn” (stage) con bên trong pipeline.
  • stage sẽ thực hiện từng công việc đã được chỉ định.
  • 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í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.

Hãy tạo 1 job mới với type là Pipeline như hình dưới

Hãy kéo xuống dưới cùng, ta có thể thấy tuỳ chọn Pipeline, tại Definition hãy chọn Pipeline script. Bây giờ chúng ta có thể tạo ra các bước thực hiện trong 1 job bằng cách nhập các công việc ở tuỳ chọn script.

Nếu bạn chưa rõ các cú pháp của Jenkins thì có thể tích vào Pipeline Syntax

Tuỳ chọn sẽ đưa bạn đến trang web như dưới, tại Sample Step bạn hãy bấm vào nó để nó xổ ra 1 loạt danh sách tuỳ chọn, mình chọn Git vì mình đang cần clone code từ git về

Hãy vào kho git của bạn copy url mã nguồn trước

Hãy dán url mã nguồn của bạn vào tuỳ chọn Repository URL, tên nhánh vào Branch và bấm vào Generate Pipeline Script

Sau khi bấm vào Generate Pipeline Script bạn sẽ nhận được 1 đường gợi ý như dưới

https://github.com/hoanghd164/webhook-and-poll-scm.git

Mình có 1 đoạn script như dưới, tác dụng của từng thành phần bạn xem lại phần trên nhé

pipeline {
    agent any
    stages{
        stage('Git clone'){
            steps{
                git branch: 'main', url: 'https://github.com/hoanghd164/webhook-and-poll-scm.git'
            }  
        }

        stage('Check folder'){
            steps{
                sh "ls"
            }  
        }

        stage('Build'){
            steps{
                echo "Build completed"
            }  
        }

    }
}

Bây giờ hãy đưa đoạn script này vào ô script trong job Jenkins Pipeline của bạn và save lại

Hãy bấm vào build now ta có lần chạy đầu tiên ở mục số 2 và các bước triển khai ở mục số 3.

Ta thấy ở mục số 3 có 3 bước được chạy trong job này đó là Git clone, Check folder và Build. Cả 3 bước đều thực hiện thành công, không có lỗi nào xảy ra

Khi bấm vào console ta thấy log chi tiết của các bước

Như vậy đến đây mình đã giới thiệu cho các bạn cách build 1 job bằng pipeline.

Chúc các bạn thành công.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories