Khái niệm về Jenkins Pipeline cho người mới bắt đầu

jenkins pipeline

Bài viết này sẽ giải thích cho bạn đọc khái niệm về Jenkins Pipeline và một số ví dụ về Jenkins Pipeline thực thi một đoạn script cơ bản trên Jenkins slave.

Jenkins là gì?

Jenkins là một server tự động hóa mã nguồn mở được viết bằng ngôn ngữ Java. Jenkins giúp tự động hóa các công đoạn “non-human” của quá trình phát triển phần mềm, với CI (Continuous Integration – sự tích hợp liên tục) và tạo điều kiện thuận lợi cho các khía cạnh kỹ thuật của CD (Continuous Delivery – sự phân phối liên tục). Đây là một hệ thống server chạy trong container servlet như Apache Tomcat. Jenkins có thể thực thi các dự án dựa trên Apache Ant, Apache Maven và sbt (scala build tool) cũng như các tập lệnh shell tùy ý và hàng loạt lệnh của Windows.

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

cai dat jenkins trên centos 7

Jenkinsfile là gì?

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.

Ví dụ:

  environment {
    BUILD_SCRIPTS_GIT="http://10.100.100.10:7990/scm/~myname/mypipeline.git"
    BUILD_SCRIPTS='mypipeline'
    BUILD_HOME='/var/lib/jenkins/workspace'
  }
  stages {
    stage('Checkout: Code') {
          steps {
            sh "mkdir -p $WORKSPACE/repo;\
                git config --global user.email 'email@address.com';\
                git config --global user.name 'myname';\
                git config --global push.default simple;\
                git clone $BUILD_SCRIPTS_GIT repo/$BUILD_SCRIPTS"
            sh "chmod -R +x $WORKSPACE/repo/$BUILD_SCRIPTS"
          }
    }
    stage('Yum: Updates') {
          steps {
            sh "sudo chmod +x $WORKSPACE/repo/$BUILD_SCRIPTS/scripts/update.sh"
            sh "sudo $WORKSPACE/repo/$BUILD_SCRIPTS/scripts/update.sh"
          }
    }
  }
  post {
    always {
       cleanWs()
    }
  }
}

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:

  • Trường pipeline{} là thành phần bắt buộc dùng để khai báo pipeline trong Jenkinsfile.
  • 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.

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
  • Pipeline SCM Step

Các bước thực hiện:

  • Truy cập Jenkins Dashboard.

jenkins pipeline

  • Chọn “Create a job“.

jenkins pipeline

  • Điền tên pipeline ở khung “Enter an item name“.

jenkins pipeline

  • Chọn “Pipeline” ở danh sách bên dưới và nhấn “OK“.

jenkins pipeline

  • Chọn “Pipeline script from SCM” ở mục “Advanced Project Options” (ở cuối trang hoặc tab “Advanced Project Options“).
  • Chọn “Git” ở mục “SCM“.
  • Thêm git/Bitbucket repo link ở mục “Repository URL“.
  • Thêm “credentials” để kết nối đến git repo nếu có.

jenkins pipeline

  • Nhấn “Save” để lưu lại thông tin vừa tạo.
  • Chọn “Build Now”  để tiến hành thực thi Jenkins Pipeline.

jenkins pipeline

Quá trình thực thi sẽ hiển thị thông tin và tình trạng các stage đã được khai báo trong Jenkinsfile trong mục Stage View. Nếu stage có màu xanh tức là đã thực thi thành công, màu đó là lỗi trong quá trình thực thi. Người dùng có thể xem log của từng stage bằng cách chọn “Log” để xem log của từng stage.

jenkins pipeline

 

Chúc bạn thành công!

Nguồn tham khảo:

  1. https://medium.com/@mightywomble/jenkins-pipeline-beginners-guide-f3868f715ed9
  2. https://topdev.vn/blog/continuous-integration-with-jenkins-bai-1-gioi-thieu-ve-ci-va-jenkins/#_4-loi-ich-cua-tich-hop-lien-tuc-4
  3. https://techblog.vn/jenkins-pipeline-for-beginners

Xem thêm các bài viết liên quan:

  1. Hướng dẫn cài đặt Jenkins trên CentOS 7
  2. Tổng quan Jenkins và Continuous Integration (CI)

Trung tâm đào tạo Viễn thông và Công nghệ thông tin TEL4VN (TEL4VN) chuyên đào tạo các khóa học về DevOps như: Docker, Kubernetes, Ansible, Jenkins, Linux…….Ngoài ra, TEL4VN còn là Trung tâm đào tạo duy nhất về VoIP mã nguồn mở.

🌐Website: https://tel4vn.edu.vn/
🔗 Fanpage: https://www.facebook.com/tel4vn

🔗 Youtube: TEL4VN

🏠Địa chỉ: 82/2/9 Đinh Bộ Lĩnh, P.26, Q.Bình Thạnh, TP.HCM
☎️SĐT: 028 3622 0868
📩 Email: tuyensinh@tel4vn.com

Keep Moving Forward

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *