【问题标题】:Jenkins MultiBranch Pipeline: Select to build only 2 specific branchesJenkins MultiBranch Pipeline:选择仅构建 2 个特定分支
【发布时间】:2021-04-07 17:45:35
【问题描述】:

我有一个 Jenkins MultiBranch 项目,我希望测试圈仅在 masterdev 的两个特定分支上运行。我试图在所有阶段添加以下内容

when { anyOf { branch 'master'; branch 'dev' } }

但我唯一能做到的就是停用所有分支运行

这是我的完整管道 Jenkinsfile

    pipeline {
        agent any
        triggers {
            cron('H 0 * * *')
        }
        options {
            disableConcurrentBuilds()
        }
        stages {
        stage('Prepare env') {
            when { anyOf { branch 'master'; branch 'dev' } }
            steps {
               sh 'rm -rf venv'
               sh 'rm -rf "${WORKSPACE}/uploads"'
               sh 'rm -rf "${WORKSPACE}/downloads"'
               sh 'mkdir "${WORKSPACE}/uploads"'
               sh 'mkdir "${WORKSPACE}/downloads"'
               catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')
               {
                     sh 'docker kill $(docker ps -q)'
                     sh 'docker rm $(docker ps -a -q)'
             sh 'docker volume rm $(docker volume ls -q)'
               }
    
            }
        }
        
            stage('Start Services') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
           
                }
            }
    
            stage('Test Common') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
    
                }
            }
    
        stage('Test Validations') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
    
                }
            }
    
            stage('Test CSV Issuance') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
    
                }
            }
     
        
            stage('Test XLS Issuance') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
    
                }
            }
     
    
        
            stage('Clean env') {
            when { anyOf { branch 'master'; branch 'dev' } }
                steps {
                   sh 'rm -rf venv'
                   sh 'rm -rf "${WORKSPACE}/uploads"'
                   sh 'rm -rf "${WORKSPACE}/downloads"'
                   catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE')
                   {
                      sh 'docker kill $(docker ps -q)'
                      sh 'docker rm $(docker ps -a -q)'
                      sh 'docker volume rm $(docker volume ls -q)'
                   }
                }
        }
}

【问题讨论】:

    标签: jenkins jenkins-pipeline


    【解决方案1】:

    你能发布你拥有的完整管道吗?

    您可以在只想在两个分支上运行的舞台上使用when 块,例如

    pipeline {
        agent any
        stages
        {
            stage ("Testing") {
                when {
                    anyOf {
                        branch 'master'
                        branch 'dev'
                    }
                }
                steps {
                    echo "run testing"
                }
            }
            stage ("everything") {
                steps{
                    echo "run on all branches"
                }
            }
        }
    }
    

    经过测试的管道

    pipeline { 
        agent any
        stages {
            stage("stage") {
                when { anyOf { branch 'master'; branch 'dev' } }
                steps {
                    echo "Hello"
                }
            }
        }
    }
    

    在主人

    [Pipeline] stage
    [Pipeline] { (stage)
    [Pipeline] echo
    Hello
    [Pipeline] }
    [Pipeline] // stage
    

    关于鱼

    [Pipeline] stage
    [Pipeline] { (stage)
    Stage "stage" skipped due to when conditional
    [Pipeline] }
    [Pipeline] // stage
    

    【讨论】:

    • 我添加了几乎完整的文件!
    • 好的,所以你在每个阶段都有 when 子句,因此没有阶段可以在不是 masterdev 的分支上运行。你期望发生什么?
    • 问题是masterdev 分支也没有运行!
    • 这很奇怪,你能发布一些控制台日志吗?我刚刚用一个简单的管道(见上文)进行了测试,它正在工作。所以有趣的是看看为什么它在你的情况下会跳过
    • 有没有其他方法可以通过多分支项目配置将这两个分支设置为唯一激活运行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-19
    • 2021-10-06
    • 1970-01-01
    相关资源
    最近更新 更多