Как я могу указать что-то вроде следующего в моем Jenkinsfile?
когда ветвь не х
Я знаю, как определить конкретные задачи отрасли, такие как:
stage('Master Branch Tasks') {
when {
branch "master"
}
steps {
sh '''#!/bin/bash -l
Do some stuff here
'''
}
}
Однако я бы хотел указать этап, когда ветвь не является главной или промежуточной, как показано ниже:
stage('Example') {
if (env.BRANCH_NAME != 'master' && env.BRANCH_NAME != 'staging') {
echo 'This is not master or staging'
} else {
echo 'things and stuff'
}
}
Однако вышеупомянутое не работает и терпит неудачу со следующими ошибками:
WorkflowScript: 62: Not a valid stage section definition: "if
WorkflowScript: 62: Nothing to execute within stage "Example"
Источник примечания для моей неудачной попытки: https://jenkins.io/doc/book / трубопровод / синтаксис / # управление потоком
2 ответа
Решив эту проблему, вы можете сделать следующее:
stage('Example (Not master)') {
when {
not {
branch 'master'
}
}
steps {
sh 'do-non-master.sh'
}
}
Вы также можете указать несколько условий (в данном случае это имена веток), используя anyOf
:
stage('Example (Not master nor staging)') {
when {
not {
anyOf {
branch 'master';
branch 'staging'
}
}
}
steps {
sh 'do-non-master-nor-staging.sh'
}
}
В этом случае do-non-master-nor-staging.sh
будет работать на всех ветках , кроме на master и staging .
Вы можете прочитать о встроенных условиях и общем синтаксисе конвейера здесь.
Новые вопросы
jenkins
Jenkins - это инструмент непрерывной интеграции с открытым исходным кодом, написанный на Java, который имеет пакеты для Linux, Mac OS X, Windows, FreeBSD и OpenBSD. Проект был раздвоен от Гудзона.