我想有,因为它是我的印詹金斯实例的控制台上,为什么一个构建通过电子邮件失败的原因。我做了以下
node {
try
{
stage('checkout') {
checkout scm
}
stage('restore') {
sh 'dotnetge restore test.sln'
}
}
catch (err) {
cause=err
emailext body:"Error: $cause ",
to: '[email protected]'
}
}
在控制台上的结果是一样的东西“dotnetge找不到命令”,我会希望有通过电子邮件这种相同类型的错误。这是我通过电子邮件收到
错误:hudson.AbortException:脚本返回的退出码127
由于shell脚本失败了,它会给你目前所得到的例外。你可以有一个变通方法来处理这个问题:
node {
try
{
stage('checkout') {
checkout scm
}
stage('restore') {
try{
sh 'dotnetge restore test.sln'}
catch(exc){
error "dotnetge command failed"
}
}
}
catch (err) {
cause=err
emailext body:"Error: $cause ",
to: '[email protected]'
}
}
这样你至少可以知道哪个命令失败。还有什么我所做的是我创建的另一个变量称为curr_stage
并指定其值设置为当前阶段:
node{
def curr_stage
try {
stage("stage1") {
curr_stage = "stage1"
}
stage("stage2") {
curr_stage = "stage2"
}
stage("stage3") {
curr_stage = "stage3"
}
}catch(exception){
//notify that the the build failed at ${curr_stage}
}
}