如何在用户可以输入日期值的情况下运行Jenkins作业?

时间:2016-03-14 07:05:02

标签: jenkins jenkins-job-dsl

我想通过接受用户的日期字段(格式为YYYY-MM-DD)来运行jenkins作业。我找到了一个用户可以输入string parameter:

的链接
job('example') {
    parameters {
        stringParam('myParameterName', 'my default stringParam value', 'my description')
    }
}

但是在字符串参数中,用户可以输入任何内容。那么如何强制用户输入日历字段,如日历字段并从日历中选择日期?

2 个答案:

答案 0 :(得分:2)

似乎没有提供日期选择器的插件。

但您可以使用Validating String Parameter Plugin,它可以使用正则表达式来验证字符串参数。有关匹配日期值的正则表达式,请参阅Regex to validate date format dd/mm/yyyy

Job DSL插件没有对Validating String Parameter Plugin的内置支持,但您可以使用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!')
    }
  }
}

答案 1 :(得分:0)

我今天遇到了同样的问题,这就是我解决它的方法。

使用:Active Choice Plugin

在声明式管道中,我添加了以下参数

 [$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 Date parameter

注意:您也可以使用它来添加 TextArea 类型的参数等。