Jenkins多分支管道:选择此选项仅构建2个特定分支
我有一个Jenkins多分支项目,我希望测试循环只在Jenkins多分支管道:选择此选项仅构建2个特定分支,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我有一个Jenkins多分支项目,我希望测试循环只在master和dev上的两个特定分支上运行。我尝试添加以下所有阶段 when { anyOf { branch 'master'; branch 'dev' } } 但我唯一能做到的就是取消所有分支机构的运行 这是我的完整文件 pipeline { agent any triggers { cron('H 0 * * *') } options {
master
和dev
上的两个特定分支上运行。我尝试添加以下所有阶段
when { anyOf { branch 'master'; branch 'dev' } }
但我唯一能做到的就是取消所有分支机构的运行
这是我的完整文件
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)'
}
}
}
}
你能发布你所有的管道吗 您可以在只希望在两个分支上运行的阶段上使用
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子句,因此没有阶段可以在不是
master
或dev
的分支上运行。您希望发生什么?问题是master
或dev
分支也没有运行!这很奇怪,你能发布一些你的控制台日志吗。我刚刚用一个简单的管道(见上文)进行了测试,它正在工作。因此,有兴趣了解一下为什么在您的案例中它会跳过多分支项目配置是否有其他方法将这两个分支设置为激活运行的唯一分支?