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中的多个子句