Кажется, не может вызвать событие «сбой» в действии после сборки для Jenkins Pipeline с Docker - PullRequest
1 голос
/ 04 апреля 2019

В настоящее время я работаю над довольно простым конвейерным скриптом для запуска скрипта 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'
        }
    }
}

Большое спасибо

1 Ответ

0 голосов
/ 09 апреля 2019

Обычно ошибки вызываются с помощью кода выхода! = 0

Почти во всех языках есть.

В JS process.exit(42)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...