我们使用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钩子推送分支时,“短暂环境中的测试”不会触发。执行“构建”和“测试”阶段,但不执行“在临时环境中测试”。一旦合并到母版中,我怀疑我的“部署”步骤会遇到类似的问题,但还没有到此为止。
要完成这项工作,我缺少什么?似乎很简单?
答案 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 {
...
}
}
}
}