tôi có mã tương tự như dưới đây trong Jenkinsfile tôi:try/catch/finally mặt nạ Jenkinsfile vấn đề trong trường hợp ngoại lệ biên dịch groovy
node {
checkout scm
// do some stuff
try {
// do some maven magic
} catch (error) {
stage "Cleanup after fail"
emailext attachLog: true, body: "Build failed (see ${env.BUILD_URL}): ${error}", subject: "[JENKINS] ${env.JOB_NAME} failed", to: '[email protected]'
throw error
} finally {
step $class: 'JUnitResultArchiver', testResults: '**/TEST-*.xml'
}
}
Nếu mã trên không thành công vì một số lỗi Jenkins-đường ống liên quan trong try { }
(ví dụ: sử dụng phương pháp tĩnh không được chấp thuận) tập lệnh không thành công. Khi tôi loại bỏ try/catch/finally, tôi có thể thấy lỗi. Tôi có làm gì sai không? Không nên rethrowing error
làm cho các lỗi đường ống xuất hiện trong nhật ký?
CHỈNH SỬA: Tôi đã cố gắng giải quyết vấn đề theo cú pháp groovy, ví dụ: Tôi sử dụng biến chưa được chỉ định. Ví dụ: echo foo
Nếu foo
không được khai báo/chỉ định bất cứ nơi nào Jenkins sẽ không xây dựng và sẽ không hiển thị lý do nếu nó nằm trong thử/nắm bắt/cuối cùng sẽ trả về ngoại lệ.
Nếu đây là Groovy đơn giản, có, nó sẽ hoạt động, nhưng vì đây là một DSL Groovy, các nhân viên DSL có thể làm bất cứ điều gì nó muốn với ngoại lệ ... Có lẽ bạn nên thử điều này thay vì: https: // jenkins.io/doc/pipeline/steps/workflow-basic-steps/#code-error-code-error-signal – Renato
@RenatoBut https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/# code-catcherror-code-catch-error-và-set-build-results Đề nghị rằng hãy thử/catch/cuối cùng cũng nên làm việc –
Phải, nhưng nếu bạn có vấn đề này trông giống như nó không ... – Renato