Jenkins使用项目工作区资源动态构建参数

时间:2014-08-05 14:19:26

标签: jenkins jenkins-plugins jenkins-scriptler

我正在尝试为几个Jenkins Jobs建立一些动态构建参数。我已找到Dynamic Parameter Plug-inExtensible Choice Parameter plugin。两者都可以使用groovy脚本进行输入。

现在是棘手的部分。我想读取project.property文件(当前版本)并将其用作输入的默认值。 问题是访问工作区中的文件。只有“可扩展选择参数”插件可以选择为当前项目(AbstractProject)启用一个方便的变量,我可以在其中获取工作区的FilePath。请参阅以下脚本:

import hudson.FilePath;

propertiesFile = new FilePath(project.getWorkspace(),"project.properties");
props = new Properties();
props.load(propertiesFile.read());
return [props["version"]]

现在这个插件只向用户提供一个列表(即使我可以让它可编辑),主要的缺点是,我需要将这个脚本复制并粘贴到我想要使用它的每个作业(更不用说改变一些东西了)所有这些工作也会很痛苦。)

动态参数插件有一个很好的脚本集成,但我不知道如何获得当前项目。这些示例不显示任何从实际工作空间加载参数的内容,只显示外部文件。

任何人都知道如何解决这两个问题?

1 个答案:

答案 0 :(得分:3)

我发现使用Dynamic Parameter Plug-in而不是Extensible或Extended Parameters可以运行groovy脚本:

  • 在主人身上,或
  • 在作业运行的从站上(假设从站已启动)。

使用远程脚本复选框进行此选择:来自插件doc:"如果"远程脚本"选中复选框,然后脚本将在构建开始的从站上执行。"

例如,我已成功在工作区中列出文件,并使用此脚本创建一个参数菜单(mytest是我的工作名称):

def dir = "ls -1 workspace/mytest".execute().text
return dir.readLines()

注意:与期望用逗号(扩展参数插件)分隔的csv文本的其他参数插件相反,这个插件需要一个常规列表对象,因此调用readLines()