Пропустить этап трубопровода Jenkins в зависимости от условий локальной разработки - PullRequest
0 голосов
/ 23 октября 2018

У меня есть сценарий конвейера Jenkins, в котором есть шаг, который выполняет 2 линтера (PyLint и Flake8), запускаемых запросом на получение, подобным этому.

pipeline {
        agent any
        stages {
            stage('PR Lint') {
                when { branch "PR-*" }
                steps {
                    parallel(
                        flake8: {
                            sh "mkdir flake8"
                            sh "git diff -U0 | tox -r -e flake8 -- --diff - --exit-zero --tee --output-file=flake8/flake8.txt"
                            archiveArtifacts allowEmptyArchive: true, artifacts: '**/flake8/*.txt'
                            step([
                            $class: 'ViolationsToGitHubRecorder',
                            config: violation_to_github_config
                            ])
                        },
                        pylint: {
                            script{
                               if( readFile('tox.ini').contains('[testenv:pylint]')){
                                    sh "mkdir pylint"
                                    sh "tox -e pylint -- --errors-only --output-format=parseable > pylint/pylint.txt || true"
                                    archiveArtifacts allowEmptyArchive: true, artifacts: '**/pylint/*.txt'
                                    step([
                                    $class: 'ViolationsToGitHubRecorder',
                                    config: violation_to_github_config
                                    ])
                               }
                            }
                    })

Я хочу дать разработчикам возможность пропустить выполнениеPyLint в зависимости от любой локальной конфигурации.Как вы видите, в настоящее время у меня есть строка if(readFile('tox.ini').contains('[testenv:pylint]')), но это изменение в конфигурации будет перенесено в хранилище при слиянии, и я этого не хочу.

Есть ли обходной путь?

1 Ответ

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

Я бы добавил еще один файл, который был бы на .gitignore, поэтому он не будет зарегистрирован. Затем вы можете просто расширить существующий if, чтобы проверить, существует ли файл, или расширить whenдирективы.Например:

when {
    anyOf {
        branch "PR-*"
        expression { !fileExists("local") } 
    }
}
...