Trong Jenkins Pipeline, việc triển khai thường được kích hoạt thủ công — phù hợp với môi trường production. Tuy nhiên, ở các môi trường như staging hay testing, nên tích hợp mức độ tự động cao hơn để giảm gánh nặng quản lý build cho developer. Cơ chế này được thiết lập thông qua khối triggers trong Jenkinsfile.
Các loại trigger hỗ trợ
1. Cron
Sử dụng cú pháp tương tự cron trên Linux để lên lịch thực thi pipeline định kỳ:
pipeline {
agent any
triggers {
cron('H */4 * * *') // Chạy mỗi 4 giờ
}
stages {
stage('Scheduled Build') {
steps {
echo 'Đang thực hiện build theo lịch trình'
}
}
}
}
2. Poll SCM
Kiểm tra thay đổi trong kho mã nguồn theo chu kỳ và kích hoạt build nếu phát hiện commit mới:
pipeline {
agent any
triggers {
pollSCM('H/15 * * * *') // Kiểm tra mỗi 15 phút
}
stages {
stage('SCM Polling') {
steps {
echo 'Phát hiện thay đổi trong repository'
}
}
}
}
3. Upstream
Kích hoạt pipeline khi dự án upstream hoàn thành với trạng thái xác định:
triggers {
upstream(
upstreamProjects: 'backend-service,db-migration',
threshold: hudson.model.Result.SUCCESS
)
}
Các giá trị trạng thái hợp lệ từ hudson.model.Result:
ABORTED: Tác vụ bị hủy thủ côngFAILURE: Build thất bạiSUCCESS: Build thành côngUNSTABLE: Có cảnh báo nhưng không lỗi nghiêm trọngNOT_BUILT: Giai đoạn không được thực thi do phụ thuộc
4. Kích hoạt từ GitLab
Yêu cầu cài đặt plugin GitLab (không cần GitLab Hook Plugin). Cấu hình webhook trên GitLab trỏ đến endpoint Jenkins kèm token bảo mật.
pipeline {
agent any
triggers {
gitlab(
triggerOnPush: true,
triggerOnMergeRequest: false,
branchFilterType: 'NameBasedFilter',
includeBranchesSpec: 'main,develop',
secretToken: "${GITLAB_WEBHOOK_TOKEN}"
)
}
stages {
stage('Build on Push') {
steps {
echo 'Tự động build khi push code'
}
}
}
}
Hai chế độ lọc nhánh chính:
- NameBasedFilter: Chỉ định nhánh cụ thể
includeBranchesSpec: Danh sách nhánh được phép (phân cách bằng dấu phẩy)excludeBranchesSpec: Danh sách nhánh bị loại trừ
- RegexBasedFilter: Sử dụng biểu thức chính quy
sourceBranchRegex: Ví dụfeature/.*hoặcrelease-\d+\.\d+
Lưu ý quan trọng: Jenkins chỉ áp dụng cấu hình trigger sau khi pipeline được thực thi ít nhất một lần thủ công.