在本地开发环境条件下跳过Jenkins管线阶段

时间:2018-10-23 20:08:19

标签: jenkins groovy pylint

我有一个Jenkins管道脚本,该脚本具有执行由这样的拉取请求触发的2个linters(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 :(得分:0)

我将添加另一个文件,该文件位于.gitignore上,因此将不会检入。然后,您可以简单地扩展现有的if来检查文件是否存在,或扩展您的when指令。例如:

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