Как запустить стадию конвейера только при отсутствии тестовых неудач? - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Jenkins в мультимодульном проекте Maven, и у меня есть три этапа в моем конвейере: сборка, тестирование и развертывание.Я хочу, чтобы можно было запускать все модульные тесты на этапе test, а в случае неудачи теста deploy этап должен быть пропущен .

Длятеперь мне удалось найти обходной путь (который работает так, как я хочу), но мне пришлось явно одобрить использование некоторых методов, которые отмечены Дженкинсом как уязвимые места.

Мне интересно, есть либолее ясный способ достижения моих целей?

import hudson.tasks.test.AbstractTestResultAction

pipeline {
    agent {
        docker {
            image 'maven:3-jdk-8-alpine'
            args '--name maven3 -v /root/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean install -DskipTests'
            }
        }

        stage('Test') {
            steps {
                sh 'mvn test --fail-never'
            }
            post {
                always {
                    junit '**/target/surefire-reports/*.xml'
                }
            }
        }

        stage('Deploy') {
            steps {
                script {
                    def AbstractTestResultAction testResultAction = currentBuild.rawBuild.getAction(AbstractTestResultAction.class)
                    if (testResultAction == null) {
                        error("Could not read test results")
                    }
                    def numberOfFailedTests = testResultAction.failCount
                    testResultAction = null
                    if (numberOfFailedTests == null || numberOfFailedTests != 0) {
                        error("Did not deploy. Number of failed tests: " + numberOfFailedTests)
                    }
                    sh 'mvn deploy -DskipTests'
                }
            }
        }
    }
}

1 Ответ

0 голосов
/ 24 октября 2018

На этапе тестирования вы выполняете: mvn test --fail-never

Теперь, даже если у вас есть тестовые сбои, maven вернется с кодом выхода 0.

Дженкинс проверяет код выхода. если оно равно 0, оно продолжится со следующей командой.

так избавься от --fail-never

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