Jenkins管道中并行阶段的不同触发器

时间:2018-03-12 13:41:48

标签: jenkins jenkins-pipeline devops jenkins-blueocean

我正在尝试创建一个管道,其中有多个触发器--cron,pull请求打开和手动。因此,我想相应地想象它。

这是我的代码,没有应用任何触发器。

pipeline {
    agent any
    environment {
        CI = 'true'
        TRIGGER = 'PULL_REQUEST'
    }
    stages {
        stage('Trigger')
        {
            parallel{

                stage('Daily') {
                     when {
                          environment name: 'TRIGGER', value: 'DAILY' 
                     }
                     steps {
                           sh 'echo "daily build"'
                     }
                }
                stage('Pull Request') {
                     when {
                          environment name: 'TRIGGER', value: 'PULL_REQUEST' 
                     }
                     steps {
                           sh 'echo "pull request trigger"'
                     }
                }
                stage('Manual') {
                     when {
                          environment name: 'TRIGGER', value: 'MANUAL' 
                     }
                     steps {
                           sh 'echo "Manual"'
                     }
                }
            }
        }
        stage('Build') {
            steps {
                sh 'echo "build step"'
            }
        }
        stage('Test') {
            steps {
                sh 'echo "test step"'
            }
        }
        stage('Deliver for development') {
            when {
                environment name: 'CI', value: 'true' 
            }
            steps {
                sh 'echo "delivery for development"'
                input message: 'Finished using the web site? (Click "Proceed" to continue)'
                sh 'echo proceeded'
            }
        }
        stage('Deploy for production') {
            when {
                environment name: 'CI', value: 'false'  
            }
            steps {
                sh 'echo "deploy for production"'
                input message: 'Finished using the web site? (Click "Proceed" to continue)'
                sh 'echo proceeded'
            }
        }
    }
}

我可以用上面的代码实现这个目的: enter image description here

现在,我的目标是将触发器置于那些并行阶段 - 每日,拉动请求和手动。但是,我无法这样做,因为trigger用于完整的管道,并且可能预期只在管道中出现一次。我怎样才能达到这个效果?

这3个并行触发器将设置一些环境变量,这些变量将在后续阶段用于相应地修改管道流程,具体取决于触发器的类型。

0 个答案:

没有答案