Свободная работа может быть настроена на сборку с параметрами.См .: https://wiki.jenkins.io/display/JENKINS/Parameterized+Build
Вы можете настроить тип параметра (строка, логическое значение, раскрывающийся список и т. Д.), Дать описание параметра и значение по умолчанию.Строковые параметры могут включать в себя правила проверки: https://wiki.jenkins.io/display/JENKINS/Validating+String+Parameter+Plugin
Хотя это предупреждает только тогда, когда текущее значение параметра не соответствует правилу проверки регулярных выражений, оно не препятствует отправке сборки.Однако, если отправлено в этом состоянии, сборка завершится неудачей.
В быстром Google, кажется, это не работает для конвейерных заданий. См. Последний комментарий на URL страницы плагина выше от MiguelángelFernández :
Если вы посмотрите на реализацию класса ValidatingStringParameterValue, вы увидите, что он переопределяет реализацию общедоступного BuildWrapper createBuildWrapper (AbstractBuild build) способом, который прерывается, если строка недопустима,Это будет работать только на работах по фристайлу и на других типах работ, расширяющих AbstractBuild.Я боюсь, что это не относится к трубопроводным работам.Возможно, в вашем предыдущем проекте вы использовали вольные работы.
Альтернативой для работы вольным стилем является проверка работоспособности перед началом каких-либо шагов сборки с использованием «Подготовка среды для выполнения» из:
https://wiki.jenkins.io/display/JENKINS/EnvInject+Plugin
Вам нужно написать groovy, чтобы проверить отправленные параметры и прервать сборку на этом этапе, если значения не подходят.Что-то вроде:
def validateString = binding.variables.get('testParam')
if (!binding.variables.get('testParam').matches('\\d+')) {
println "failure of parameter validation - does not match regex"
throw new InterruptedException()
} else {
println "Validation passed carry on with build"
}
Это не работает при сборке конвейера - так как плагин цитируется:
'Этот плагин имеет некоторые известные ограничения.Например, Pipeline Plugin поддерживается не полностью. '.
Но если вы используете скриптовые конвейеры, вы можете реализовать нечто подобное:
stage 'start up'
if(!env.testParam.matches('\\d+')) {
error 'failure of parameter validation - does not match regex'
}