我正在尝试为几个Jenkins Jobs建立一些动态构建参数。我已找到Dynamic Parameter Plug-in和Extensible 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"]]
现在这个插件只向用户提供一个列表(即使我可以让它可编辑),主要的缺点是,我需要将这个脚本复制并粘贴到我想要使用它的每个作业(更不用说改变一些东西了)所有这些工作也会很痛苦。)
动态参数插件有一个很好的脚本集成,但我不知道如何获得当前项目。这些示例不显示任何从实际工作空间加载参数的内容,只显示外部文件。
任何人都知道如何解决这两个问题?
答案 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()
。