我想添加一个新的强制作业属性来捕获jenkins作业中的一些自定义字段。我在插件列表中搜索但找不到任何解决问题的相关插件。有没有插件可以解决这个问题? (注意:额外的列插件无法解决我的用例)
答案 0 :(得分:0)
可以将自由式作业配置为使用参数进行构建。请参阅:https://wiki.jenkins.io/display/JENKINS/Parameterized+Build
您可以配置参数类型(字符串,布尔值,下拉列表等),提供参数说明和默认值。字符串参数可以包括验证规则: https://wiki.jenkins.io/display/JENKINS/Validating+String+Parameter+Plugin
虽然这仅在当前参数值不符合正则表达式验证规则时发出警告,但它不会阻止提交构建。但是,如果在此状态下提交,则构建将失败。
从快速谷歌来看,这似乎不适用于管道工作,请参阅MiguelángelFernández上方插件页面上的最新评论:
如果查看类ValidatingStringParameterValue的实现,您将看到它以一种在字符串无效时中止的方式覆盖公共BuildWrapper createBuildWrapper(AbstractBuild构建)的实现。这仅适用于Freestyle作业和扩展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"
}
这不适用于管道构建 - 因为插件是引用:
'这个插件有一些已知的限制。例如,管道插件不完全支持。'。
但是如果你使用的是脚本管道,你可以实现类似的东西:
stage 'start up'
if(!env.testParam.matches('\\d+')) {
error 'failure of parameter validation - does not match regex'
}