gpt4 book ai didi

node.js - 在使用 Docker 的 Jenkins Pipeline 的构建后操作中似乎无法触发 "failure"事件

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:54 24 4
gpt4 key购买 nike

我目前正在开发一个非常简单的管道脚本,用于在 docker 镜像中运行 node.js 脚本。

我的问题是,即使我的脚本最终在容器内出现错误,管道配置也会认为该阶段是成功的。

从我现在在互联网上找到的内容来看,Jenkins似乎使用docker进程的退出代码来终止容器,而不是我在容器中运行的脚本的退出代码,所以我总是得到0退出代码,并且我的后脚本“失败”没有被执行。

有人知道如何从容器内部获取退出代码吗?

此外,我想保持代理的语法不变,以避免在阶段中手动输入 docker run 命令,因为我有很多环境变量要注入(inject)到容器中。

这是我的 Jenkinsfile 的简化版本。dostuff.js 失败,但 Jenkins 仍尝试归档工件

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)

关于node.js - 在使用 Docker 的 Jenkins Pipeline 的构建后操作中似乎无法触发 "failure"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55504901/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com