Tôi có cùng vấn đề. Tôi đang sử dụng đường ống dẫn. Tôi đã giải quyết vấn đề này bằng cách thực hiện một số shared library.
Mã của thư viện là:
// vars/ciSkip.groovy
def call(Map args) {
if (args.action == 'check') {
return check()
}
if (args.action == 'postProcess') {
return postProcess()
}
error 'ciSkip has been called without valid arguments'
}
def check() {
env.CI_SKIP = "false"
result = sh (script: "git log -1 | grep '.*\\[ci skip\\].*'", returnStatus: true)
if (result == 0) {
env.CI_SKIP = "true"
error "'[ci skip]' found in git commit message. Aborting."
}
}
def postProcess() {
if (env.CI_SKIP == "true") {
currentBuild.result = 'NOT_BUILT'
}
}
Sau đó, trong Jenkinsfile tôi:
pipeline {
stages {
stage('prepare') { steps { ciSkip action: 'check' } }
// other stages here ...
}
post { always { ciSkip action: 'postProcess' } }
}
Như bạn có thể thấy, việc xây dựng được đánh dấu là NOT_BUILT
. Bạn có thể thay đổi nó thành ABORTED
nếu bạn thích, nhưng không thể đặt thành SUCCESS
vì a build result can only get worse
thử sh "git log -1" và grep văn bản có liên quan. – Amityo
@Amityo: Cảm ơn nó thực sự hữu ích. Tôi cần thêm một truy vấn ... làm thế nào để ngăn chặn jenkins xây dựng trong jenkinsfile, nếu tin nhắn chứa nội dung [ci skip]? –