Dưới đây là yêu cầu cần thiết để đạt được bằng cách sử dụng Đường ống Jenkins và tôi là con ong mới vào Đường ống Jenkins.
- Sau khi hoàn thành công việc phát triển và đẩy các thay đổi của mình lên Bitbucket, người dùng sẽ tạo một yêu cầu kéo.
- Để phê duyệt yêu cầu kéo, chúng tôi cần ít nhất một bản dựng Jenkins thành công. Do đó, chúng tôi chỉ muốn nhận kết quả xây dựng của mã được kiểm tra cho yêu cầu kéo.
- Khi yêu cầu kéo được tạo / cập nhật, Jenkins sẽ được kích hoạt tự động để tích hợp liên tục thực sự.
- Kết quả xây dựng sẽ được báo cáo lại cho Bitbucket.
Trình tạo yêu cầu Stash Pull được sử dụng và Trình thông báo stash cho quy trình trên đang hoạt động cho Dự án tự do thông thường.
Chúng ta cần di chuyển các chức năng tương tự bằng cách sử dụng đường ống Jenkins, vì vậy đã tạo ra công việc jenkins như dưới đây.
Kịch bản đường ống để kiểm tra nhánh PR và kích hoạt xây dựng như dưới đây
node {
stage('Checkout') {
checkout(
[
$class: 'GitSCM',
extensions: [
[$class: 'CleanCheckout'],
],
branches: [
[name: '']
],
userRemoteConfigs:
[[
credentialsId: 'id',
url: 'repourl.git'
refspec: ('+refs/pull-requests/*/from:refs/remotes/origin/pr/*/from'),
branch: ('origin/pr/${pullRequestId}/from')
]]
])
}
stage('Build') {
sh 'make'
}
stage('notify') {
step([$class: 'StashNotifier'])
try {
// Do stuff
currentBuild.result = 'SUCCESS'
} catch(err) {
currentBuild.result = 'FAILED'
}
step([$class: 'StashNotifier'])
}
}
Mặc dù tôi đã thực hiện cấu hình trên khi tôi tạo / cập nhật PR, bản dựng không được kích hoạt tự động trong jenkins. Tôi đoán thông báo từ stash đến jenkins đã không xảy ra vì chúng tôi chỉ định "origin/${pullRequestId}/from"
trong dự án kiểu miễn phí. Nhưng tôi không có tùy chọn đó để chỉ định trong công việc đường ống.
Đã thử một vài lựa chọn thay thế như dưới đây.
Thay vì stash Pull Request Builder, tôi đã thử chỉ với dự án "Poll SCM" và công việc định kỳ được chỉ định để kích hoạt như "H/2 * * * *"
. Khi cam kết công việc được kích hoạt tại jenkins. Nó có nghĩa là cho mỗi cam kết, công việc của jenkins được kích hoạt. Nhưng Jenkins nên kích hoạt công việc khi PR được tạo / cập nhật.
Tôi đang thiếu một cái gì đó ở đây chắc chắn có thể là cơ bản và mới cho đường ống jenkins.
Bất kỳ gợi ý về việc đạt được các hành vi mong muốn?