У меня есть Jenkinsfile
, который имеет два разных этапа: Pre-Build
и Build
. Pre-Build
выполняет pylint
и использует плагин warnings-ng
, чтобы сообщить об этом Дженкинсу.
Примерно так:
stages {
stage('Pre-build') {
steps {
script {
sh """#!/usr/bin/env bash
pip install .
pylint --exit-zero --output-format=parseable --reports=n myProject > reports/pylint.log
"""
}
}
post {
always {
recordIssues(
enabledForFailure: true,
tool: pyLint(pattern: '**/pylint.log'),
unstableTotalAll: 20,
failedTotalAll: 30,
)
}
failure {
cleanWs()
}
}
}
stage('Build') {
steps {
script {
sh """#!/usr/bin/env bash
set -e
echo 'I AM STAGE TWO AND I SHOULD NOT BE EXECUTED'
"""
}
}
post {
always {
cleanWs()
}
}
}
}
Я сталкиваюсь с парой вопросов здесь. В настоящее время я устанавливаю pylint
в --exit-zero
, так как я хочу, чтобы плагин warnings-ng
решал, подходит ли он для go или нет, на основании отчета.
В настоящее время происходит сбой в общей сложности 30 проблем. Теперь у myProject
есть 45 проблем, и я хочу предотвратить переход на следующий этап, Build
. Но в настоящее время я не могу предотвратить такое поведение, поскольку оно всегда продолжается до стадии Build
.
Сборка помечается как неудачная из-за результатов, определенных в recordIssues
, но она не прерывает работу.
Я нашел билет на https://issues.jenkins-ci.org ( Ticket ), но мне кажется, что я не вижу смысла во всем этом.