我想通过接受用户的日期字段(格式为 YYYY-MM-DD)来运行 jenkins 作业。我找到了一个链接,用户可以在其中输入字符串参数:
job('example') { parameters { stringParam('myParameterName', 'my default stringParam value', 'my description') } }
但是在字符串参数中,用户可以输入任何东西。那么如何强制用户输入日历字段等日期字段并从日历中选择日期?
我想通过接受用户的日期字段(格式为 YYYY-MM-DD)来运行 jenkins 作业。我找到了一个链接,用户可以在其中输入字符串参数:
job('example') { parameters { stringParam('myParameterName', 'my default stringParam value', 'my description') } }
但是在字符串参数中,用户可以输入任何东西。那么如何强制用户输入日历字段等日期字段并从日历中选择日期?
似乎没有提供日期选择器的插件。
但是您可以使用Validating String Parameter Plugin,它可以使用正则表达式来验证字符串参数。请参阅正则表达式以验证日期格式 dd/mm/yyyy以获取匹配日期值的正则表达式。
Job DSL 插件没有对验证字符串参数插件的内置支持,但您可以使用配置块来添加相关的配置 XML。
job('example') {
configure { project ->
project / 'properties' / 'hudson.model.ParametersDefinitionProperty' / parameterDefinitions << 'hudson.plugins.validating__string__parameter.ValidatingStringParameterDefinition' {
name('DATE')
description('date in YYYY-MM-DD format')
defaultValue('2016-03-01')
regex(/\d\d\d\d-\d\d-\d\d/)
failedValidationMessage('Enter a YYYY-MM-DD date value!')
}
}
}
我今天遇到了同样的问题,这就是我解决它的方法。
使用:主动选择插件
在声明式管道中,我添加了以下参数
[$class: 'DynamicReferenceParameter',
choiceType: 'ET_FORMATTED_HIDDEN_HTML',
description: '',
name: 'YOUR_PARAMETER_NAME',
omitValueField: true,
referencedParameters: '',
script: [
$class: 'GroovyScript',
fallbackScript: [classpath: [], sandbox: false, script: ''],
script: [
classpath: [],
sandbox: false,
script: 'return "<input type=\\"date\\" name=\\"value\\" value=\\"\\" />"'
]
]
]
基本上,它添加了一个 Date 类型的 HTML 输入元素,然后您可以在运行期间捕获该值。
pipeline {
agent { label "master" }
stages {
stage('Output Date') {
steps {
script {
println params.YOUR_PARAMETER_NAME
}
}
}
}
}
这是它在 Chrome 上的外观图片: HTML 日期参数
注意:您也可以使用它来添加TextArea等类型的参数。