将自定义作业属性添加到Jenkins作业

时间:2018-06-06 11:20:42

标签: jenkins jenkins-plugins

我想添加一个新的强制作业属性来捕获jenkins作业中的一些自定义字段。我在插件列表中搜索但找不到任何解决问题的相关插件。有没有插件可以解决这个问题? (注意:额外的列插件无法解决我的用例)

1 个答案:

答案 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'
}