我如何 运行 用户可以输入日期值的 Jenkins 作业?
How do I run a Jenkins job where user can enter a date value?
我想通过接受用户的日期字段(格式为 YYYY-MM-DD)来 运行 jenkins 作业。我找到了 link,用户可以在其中输入 string parameter:
job('example') {
parameters {
stringParam('myParameterName', 'my default stringParam value', 'my description')
}
}
但是在字符串参数中用户可以输入任何东西。那么如何强制用户输入日历字段之类的日期字段和日历中的 select 日期?
似乎没有提供日期选择器的插件。
但是您可以使用 Validating String Parameter Plugin, which can use a regular expression to validate a string parameter. See Regex to validate date format dd/mm/yyyy 匹配日期值的正则表达式。
Job DSL 插件没有对验证字符串参数插件的内置支持,但您可以使用 Configure Block 添加相关配置 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=\"\" />"'
]
]
]
基本上它添加了一个日期类型的 HTML 输入元素,然后您可以在 运行.
期间捕获该值
pipeline {
agent { label "master" }
stages {
stage('Output Date') {
steps {
script {
println params.YOUR_PARAMETER_NAME
}
}
}
}
}
这是它在 Chrome 上的外观图片:
HTML Date parameter
注意:也可以用它来添加TextArea等类型的参数
我想通过接受用户的日期字段(格式为 YYYY-MM-DD)来 运行 jenkins 作业。我找到了 link,用户可以在其中输入 string parameter:
job('example') { parameters { stringParam('myParameterName', 'my default stringParam value', 'my description') } }
但是在字符串参数中用户可以输入任何东西。那么如何强制用户输入日历字段之类的日期字段和日历中的 select 日期?
似乎没有提供日期选择器的插件。
但是您可以使用 Validating String Parameter Plugin, which can use a regular expression to validate a string parameter. See Regex to validate date format dd/mm/yyyy 匹配日期值的正则表达式。
Job DSL 插件没有对验证字符串参数插件的内置支持,但您可以使用 Configure Block 添加相关配置 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=\"\" />"'
]
]
]
基本上它添加了一个日期类型的 HTML 输入元素,然后您可以在 运行.
期间捕获该值pipeline {
agent { label "master" }
stages {
stage('Output Date') {
steps {
script {
println params.YOUR_PARAMETER_NAME
}
}
}
}
}
这是它在 Chrome 上的外观图片: HTML Date parameter
注意:也可以用它来添加TextArea等类型的参数