Регулярное выражение для соответствия ветвь jenkins декларативный конвейер - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть требование разрешить ветвь патча также с мастер-веткой (мы используем git).

stages {
    stage('PR Build') {
        when {
            beforeAgent true
            expression {
                        isMaster = env.BRANCH_NAME == masterBranchName
                        isPatch = env.BRANCH_NAME !=~ /Patch_For_*([a-z0-9]*)/
                        echo "isMaster : ${isMaster} , isPatch : ${isPatch}"
                        return !isMaster && !isPatch
                       }
        }
        steps {
            script{
                buildType = 'PR'
            }
            // Do PR build here...
        }
    }

    stage('Build master / patch branch') {
        when {
            beforeAgent true
            expression {
                        isMaster = env.BRANCH_NAME == masterBranchName
                        isPatch = env.BRANCH_NAME !=~ /Patch_For_*([a-z0-9]*)/
                        echo "isMaster : ${isMaster} , isPatch : ${isPatch}"
                        return isMaster || isPatch
                       }
        }
        steps {
            script {
                buildType = 'deployment'
                )
            }
            // Do master or patch branch build and deployment
        }
    }

Здесь проблема в регулярных выражениях ветки Patch.Я хочу, чтобы Дженкинс проверил, начинается ли ветвь патча с Patch_For_shortCommitIDSha, например Patch_For_87eff88

Но регулярное выражение, которое я написал неправильно, допускает ветки, отличные от веток, начинающиеся с Patch_For_

Ответы [ 2 ]

0 голосов
/ 30 апреля 2019

Это сработало для меня.

isPatch = (env.BRANCH_NAME ==~ /Patch_For_*([a-z0-9]*)/)
0 голосов
/ 15 апреля 2019

Проблема с оператором NOT.

'! = ~' - недопустимый оператор соответствия для Groovy, и его необходимо заменить.Переписанная форма регулярного выражения IF NOT MATCH должна выглядеть следующим образом:

isPatch = !(env.BRANCH_NAME =~ /Patch_For_*([a-z0-9]*)/)

Итак, вы видите, что оператор NOT ! должен выходить из выражения логического соответствия, котороеследует заключать в скобки и НЕ ставить прямо перед ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...