【发布时间】:2021-02-09 09:44:33
【问题描述】:
我目前正在处理一个 jenkinsfile,它没有任何方法来捕获响应,无论工作是否成功。
目前是这样的
steps {
sh """
#!/bin/bash
curl -d '{ \"ref\": \"${env.BRANCH_NAME}\" }' \\
-H \"Accept: application/json\" \\
'#somelink/api' \\
-k -q
"""
}
}
}
post {
success {
slackSend(
color: 'good',
message: "Build success : ${env.JOB_NAME}-${env.BUILD_NUMBER}. <${env.BUILD_URL}|Go to build>"
)
}
failure {
slackSend(
color: 'danger',
message: "Build failed : ${env.JOB_NAME}-${env.BUILD_NUMBER}. <${env.BUILD_URL}|Go to build>"
)
}
aborted {
slackSend(
color: '#858384',
message: "Build aborted : ${env.JOB_NAME}-${env.BUILD_NUMBER}. <${env.BUILD_URL}|Go to build>"
)
}
在 Jenkins 中它会显示结果
```+ curl -d '{ "ref": "service" }' -H 'Accept: application/json' http://somelink/payload -k -q
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 20 0 0 100 20 0 19 0:00:01 0:00:01 --:--:-- 19
100 20 0 0 100 20 0 9 0:00:02 0:00:02 --:--:-- 9
100 20 0 0 100 20 0 6 0:00:03 0:00:03 --:--:-- 6
100 20 0 0 100 20 0 4 0:00:05 0:00:04 0:00:01 4
100 20 0 0 100 20 0 3 0:00:06 0:00:05 0:00:01 3
100 20 0 0 100 20 0 3 0:00:06 0:00:06 --:--:-- 0
100 20 0 0 100 20 0 2 0:00:10 0:00:07 0:00:03 0
100 20 0 0 100 20 0 2 0:00:10 0:00:08 0:00:02 0
100 20 0 0 100 20 0 2 0:00:10 0:00:09 0:00:01 0
100 20 0 0 100 20 0 1 0:00:20 0:00:10 0:00:10 0
100 20 0 0 100 20 0 1 0:00:20 0:00:11 0:00:09 0
100 20 0 0 100 20 0 1 0:00:20 0:00:12 0:00:08 0
100 20 0 0 100 20 0 1 0:00:20 0:00:13 0:00:07 0
100 20 0 0 100 20 0 1 0:00:20 0:00:14 0:00:06 0
100 20 0 0 100 20 0 1 0:00:20 0:00:15 0:00:05 0
100 20 0 0 100 20 0 1 0:00:20 0:00:16 0:00:04 0
100 20 0 0 100 20 0 1 0:00:20 0:00:17 0:00:03 0
100 20 0 0 100 20 0 1 0:00:20 0:00:18 0:00:02 0
100 20 0 0 100 20 0 1 0:00:20 0:00:19 0:00:01 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:20 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:21 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:22 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:23 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:24 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:25 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:26 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:27 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:28 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:29 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:30 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:31 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:32 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:33 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:34 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:35 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:36 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:37 --:--:-- 0
100 20 0 0 0 20 0 0 --:--:-- 0:00:38 --:--:-- 0
0 4847 0 0 0 20 0 0 --:--:-- 0:00:39 --:--:-- 0{"status":"success","message":"triggered: umask 0022; r10k deploy environment service -pv\n\nWARN\t -> Environment \"SOMEBRANCH\"```
我在这里想要实现的是捕获"status":"success",如果出现这种情况,那么它应该继续执行success {} 步骤。否则进入failure{} 步骤。
脚本运行良好,并产生了应有的结果,但是在某些情况下,"status": 并不总是显示为成功,但它仍然在 jenkins 上显示一切都很好。任何帮助将不胜感激!
【问题讨论】:
-
据我所知,请看这个:jenkins.io/blog/2016/07/18/pipeline-notifications 这让你对成功和失败的事情有很大的控制权。
标签: jquery jenkins jenkins-pipeline try-catch devops