node.js - 在 Jenkins Pipeline with Docker 的后期构建操作中似乎无法触发“失败”事件
问题描述
我目前正在开发一个非常简单的管道脚本来在 docker 映像中运行 node.js 脚本。
我的问题是,即使我的脚本最终在容器内出现错误,管道配置也认为该阶段是成功的。
从我现在在互联网上找到的内容来看,Jenkins 似乎使用了终止容器的 docker 进程的退出代码,而不是我在容器中运行的脚本的退出代码,所以我总是得到一个 0退出代码,并且我的发布脚本“失败”未执行。
任何人都知道我如何从容器内部获取退出代码?
另外,我想保持代理的语法不变,以避免在阶段手动键入 docker run 命令,因为我有很多环境变量要注入容器中。
所以这是我的 Jenkinsfile 的简化版本。失败了dostuff.js
,但詹金斯仍然试图存档工件
pipeline {
agent {
docker { image 'node:10-alpine' }
}
environment {
SOME_VAR = "some value"
}
stages {
stage('Prepare to do stuff') {
steps {
sh 'npm i'
}
}
stage('Do stuff') {
steps {
sh './dostuff.js'
}
}
}
post {
success {
archiveArtifacts artifacts: '*.stuf.json'
echo 'Sending artifact to mailing list'
emailext attachmentsPattern: '*.stuf.json', body: '', subject: "${env.JOB_NAME} #${env.BUILD_NUMBER}", to: 'me@me.com'
}
failure {
echo 'Sending failure notifiation'
emailext attachLog: true, body: '', subject: "Build failed in Jenkins: ${env.JOB_NAME} #${env.BUILD_NUMBER}", to: 'not-me@me.com'
}
}
}
非常感谢
解决方案
通常,错误是使用退出代码触发的!= 0
几乎所有语言都有它。
在 JS 中process.exit(42)
推荐阅读
- python - AttributeError:“字节”对象没有属性“读取”
- html - 结合 aria-label 和 aria- describeby 可以吗?
- vuejs2 - Quasar 自定义输入组件字段验证
- javascript - SVG ViewBox 到宽度和高度
- c++ - c++前向声明+ifndef也需要指针
- terminal - tmux 会话预览未显示
- javascript - 如何将内容放在particle.js之上/之上
- python - Numpy获取排序数组中的插入索引
- angular - 从服务更改变量的值
- flutter - 如何在 CustomScrollView 中保持滚动位置