Дженкинс огурец сообщает - PullRequest
0 голосов
/ 06 февраля 2020

Я использую плагин Cucumber Reports в моем декларативном конвейере, например:

cucumber '**/cucumber.json'

Я могу проверить, не прошли ли некоторые тесты по ссылке на боковой панели, но Мне нужно что-то сделать, чтобы пометить этап, содержащий проверку cucumber.json, как неудачный, если некоторые отчеты по огурцам не пройдены? Поскольку проблема заключается в том, что сборка и этап являются зелеными и успешными, несмотря на то, что есть некоторые неудачные отчеты об огурцах.

Версия Jenkins - 2.176.3

Версия отчетов об огурцах - 4.10.0

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Используемая команда Cucumber просто генерирует отчет независимо от результата теста. Так что да, вы должны каким-то образом заставить свой конвейер выйти из строя, так как проблема, с которой вы сталкиваетесь, заключается в том, что ваша тестовая команда не возвращается, вызывая сбой вашего конвейера.

Путь к go состоит в том, чтобы заставить эту команду работать тесты возвращают ненулевой код выхода (выход 1), если что-то пошло не так в ваших тестах. Это сделало бы ваш этап конвейера красным go.

В случае, если вы запускаете свои тесты с использованием Maven, это будет автоматически управляться с помощью 'mvn test' (или любого другого). В противном случае, если вы не можете сделать это, вам придется создать что-то вроде, например, скрипта sh, который возвращает код выхода (0 pass / 1 fail), или функцию groovy внутри тега 'script', которая устанавливает конвейер currentBuild.result значение:

def checkTestResult() {
    // Check some file to see if tests went fine or not
    return 'SUCCESS' // or 'FAILURE'
}
...
stage {
    script {
        currentBuild.result = checkTestResult()
        if (currentBuild.result == 'FAILURE') {
            sh "exit 1" // Force pipeline exit with build result failed
        }
    }
}
...

Я рекомендую вам использовать команду cucumber для действия «всегда» после сборки вашего декларативного конвейера, поскольку это шаг, который вы, вероятно, будете выполнять каждый раз в конце конвейер, если он проходит или выходит из строя. Смотрите следующий пример:

pipeline {

    stages {
        stage('Get code') {
            // Whatever
        }
        stage('Run tests') {
            steps {
                sh "mvn test" // run_tests.sh or groovy code
            }
        }
    }
    post {
        always {
            cucumber '**/cucumber.json'
        }
    }
}
0 голосов
/ 07 февраля 2020

Можно установить BuildStatus : 'FAILURE', чтобы пометить сборку как неудачную, если отчет помечен как неудачный.

cucumber fileIncludePattern: '**/cucumber.json', buildStatus: 'FAILURE'

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