使用Jenkins触发器执行管道的测试套件运行

时间:2019-08-29 22:31:43

标签: jenkins jenkins-pipeline

我们使用Jenkins 2.176来管理CI。在我们的Jenkinsfile中,我们定义了一个触发器,以在凌晨4:30启动管道M-F,并且希望它跳过在临时环境中进行测试并进行部署。

pipeline {
    triggers { cron('30 4 * * 1-5') }
    stages {
        stage('Build') {
            ...
        }
        stage('Tests') {
            ...
        }
        stage('Test in ephemeral environment') {
            when { triggeredBy 'SCMTrigger' }
            steps {
                ...
            }
        }
        stage('Deploy') {
            when { allOf { branch 'master'; triggeredBy 'SCMTrigger' } }
            steps {
                ...
            }
        }
    }
}

问题是:当通过git钩子推送分支时,“短暂环境中的测试”不会触发。执行“构建”和“测试”阶段,但不执行“在临时环境中测试”。一旦合并到母版中,我怀疑我的“部署”步骤会遇到类似的问题,但还没有到此为止。

要完成这项工作,我缺少什么?似乎很简单?

1 个答案:

答案 0 :(得分:0)

我的解决方案是将TimerTrigger明确排除在我不想执行的步骤之外。从我的示例中,我做到了:

pipeline {
    triggers { cron('30 4 * * 1-5') }
    stages {
        stage('Build') {
            ...
        }
        stage('Tests') {
            ...
        }
        stage('Test in ephemeral environment') {
            when { not { triggeredBy 'TimerTrigger' } }
            steps {
                ...
            }
        }
        stage('Deploy') {
            when { allOf { branch 'master'; not { triggeredBy 'TimerTrigger' } } }
            steps {
                ...
            }
        }
    }
}