Bạn có thể sử dụng build job
bước từ Jenkins Pipeline (Yêu cầu tối thiểu Jenkins: 2.130).
Đây là API đầy đủ cho build
bước: https://jenkins.io/doc/pipeline/steps/pipeline-build-step/
Cách sử dụng build
:
job
: Tên của một công việc hạ nguồn để xây dựng. Có thể là một công việc Pipeline khác, nhưng phổ biến hơn là tự do hoặc dự án khác.
- Sử dụng một tên đơn giản nếu công việc nằm trong cùng thư mục với công việc Đường ống ngược dòng này;
- Thay vào đó, bạn có thể sử dụng các đường dẫn tương đối như
../sister-folder/downstream
- Hoặc bạn có thể sử dụng các đường dẫn tuyệt đối như
/top-level-folder/nested-folder/downstream
Kích hoạt một công việc khác bằng cách sử dụng một nhánh làm param
Tại công ty của tôi, nhiều chi nhánh của chúng tôi bao gồm "/". Bạn phải thay thế bất kỳ trường hợp nào của "/" bằng "% 2F" (như nó xuất hiện trong URL của công việc).
Trong ví dụ này, chúng tôi đang sử dụng các đường dẫn tương đối
stage('Trigger Branch Build') {
steps {
script {
echo "Triggering job for branch ${env.BRANCH_NAME}"
BRANCH_TO_TAG=env.BRANCH_NAME.replace("/","%2F")
build job: "../my-relative-job/${BRANCH_TO_TAG}", wait: false
}
}
}
Kích hoạt một công việc khác bằng cách sử dụng số bản dựng làm thông số
build job: 'your-job-name',
parameters: [
string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
]
Kích hoạt nhiều công việc song song
Nguồn: https://jenkins.io/blog/2017/01/19/converting-conditable-to-pipeline/
Thông tin thêm về Parallel tại đây: https://jenkins.io/doc/book/pipeline/syntax/#abul
stage ('Trigger Builds In Parallel') {
steps {
// Freestyle build trigger calls a list of jobs
// Pipeline build() step only calls one job
// To run all three jobs in parallel, we use "parallel" step
// https://jenkins.io/doc/pipeline/examples/#jobs-in-parallel
parallel (
linux: {
build job: 'full-build-linux', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
mac: {
build job: 'full-build-mac', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
windows: {
build job: 'full-build-windows', parameters: [string(name: 'GIT_BRANCH_NAME', value: env.BRANCH_NAME)]
},
failFast: false)
}
}
Hay cách khác:
stage('Build A and B') {
failFast true
parallel {
stage('Build A') {
steps {
build job: "/project/A/${env.BRANCH}", wait: true
}
}
stage('Build B') {
steps {
build job: "/project/B/${env.BRANCH}", wait: true
}
}
}
}