Jenkins:commit to target分支触发的PR管道

Jenkins:commit to target分支触发的PR管道,jenkins,Jenkins,我有以下Jenkinsfile: pipeline { environment { STAGING_BRANCH = 'project' } agent any stages { stage('Staging Environment') { steps { sh "sh /bin/create-staging-env" }

我有以下
Jenkinsfile

pipeline {
    environment {
        STAGING_BRANCH = 'project'
    }
    agent any
    stages {
        stage('Staging Environment') {
            steps {
                sh "sh /bin/create-staging-env"
                }
            }
            when {
                expression { env.CHANGE_TARGET == env.STAGING_BRANCH && env.CHANGE_ID }
            }
        }
    }
}
条件
表达式{env.CHANGE\u TARGET==env.STAGING\u BRANCH&&env.CHANGE\u ID}
仅用于在阶段是拉式请求且目标分支是
项目时执行该阶段

我有一个只有1个提交的拉取请求:

但jenkins将该管道运行了多次(7次):

我对额外构建的触发器的猜测是,当提交被推送到另一个分支时,该分支有一个pull请求

编辑 现在我明白了创建构建的原因。它们是由提交到目标分支
项目
引起的,因为提交更改了目标分支,Jenkins将再次执行该PR的管道


然后我的问题变为,如何获取触发此管道的提交被推入哪个分支。例如,如果提交被推送到
项目
分支,我想忽略PRs的阶段。我想做一些类似于
expression{…&&env.COMMIT_BRANCH!='project'}
查看阶段的when分支子句。你可以告诉詹金斯在特定的分支上运行stage,也可以跳过stage

stage('PR stuff') {
   when {
       not {
           branch 'project'
       }
   }
   steps {
     sh 'something '
  }
}
您可以使用all of和any of来匹配when-too中的多个子句