В настоящее время я работаю над довольно простым конвейерным скриптом для запуска скрипта node.js внутри образа докера.
Моя проблема заключается в том, что даже если мои скрипты заканчиваются с ошибкой внутриКонтейнер, конфигурация конвейера считает, что этап успешен.
Из того, что я нашел в Интернете на данный момент, кажется, что Дженкинс использует код завершения процесса докера, завершающего контейнер, а не выходкод скрипта, который я запустил в контейнере, поэтому я всегда получаю код выхода 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'
}
}
}
Большое спасибо