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



我们使用 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 钩子推送分支时触发。执行"构建"和"测试"阶段,但不执行"在临时环境中测试"。合并到 master 后,我怀疑我在"部署"步骤中会遇到类似的问题,但还没有做到那么远。

我错过了什么来完成这项工作?看起来很简单 🤔

我的解决方案是简单地从我不想执行的步骤中明确排除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 {
...
}
}
}
}

最新更新