Logo

Personal Ops Runbook

Personal runbook covering infrastructure operations for Cloud, Kubernetes, OpenStack, and Ceph environments. Includes deployment and teardown procedures, node management, cluster monitoring setup, and incident response workflows compiled from day-to-day operational work. Intended strictly for personal reference — configurations and scripts are environment-specific and not guaranteed to work as-is elsewhere.

[Jenkins] 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.
  • agentdù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.
  • environmentdù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.
  • stagesẽ thực hiện từng công việc đã được chỉ định.
  • postsẽ đượ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.

Đầu tiên bạn hãy tạo 1 job với type là Pipeline

image

Hãy vào kho chứa source (ví dụ của mình là Github) của bạn tạo 1 file mới có tên Jenkinsfile

image

Copy nội dung dưới đưa vào Jenkinsfile, đây chính là nơi thể hiện các bước thực hiện 1 job

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"
            }
        }

    }
}

Hình ảnh sau khi truyền nội dung trên vào Jenkinsfile, hãy lưu file này lại.

image

Sau khi tạo xong file Jenkinsfile ta có file như mục 1 ở dưới. Hãy thực hiện copy url project của bạn theo các bước 2, 3 hình dưới. Bước 4 chính là nhánh của bạn, hãy ghi nhớ để lát chúng ta khai báo trong Pipeline của Jenkins.

image

Sau khi copy xong url project ta sẽ được đường link như dưới

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

Hãy thực hiện các bước dưới để kết thúc việc khai báo repository chứa source dự án cho Jenkins, ở bước 3 chúng ta dán urk repository của project mà lúc nãy đã copy ở bước trên.

Bước số 4 bạn hãy truyền tên nhánh vào.

image

Kéo xuống dưới cùng, tại phần Script Path hãy trỏ tên Jenkinsfile mà chúng ta đã tạo ra trong kho repository Github ở các bước trên và lưu lại

image

Sau khi tạo xong job, bạn sẽ có 1 job mới như hình dưới, hãy bấm vào job vừa tạo xong để chúng ta bắt đầu build thử

image

Hãy bấm build now để khởi động job, chúng ta thấy job đã chạy lần thứ nhất ở phần số 2 hình dưới, các bước thực hiện ở job này được thể hiện ở phần số 3 hình dưới.

image

Trên đây mình đã hướng dẫn các bạn triển khai 1 job bằng Jenkinsfile, hi vọng bài viết này sẽ có ích cho các bạn.