【问题标题】:Jenkins dynamic build parameters using project workspace resources使用项目工作区资源的 Jenkins 动态构建参数
【发布时间】:2014-09-28 06:00:38
【问题描述】:

我正在尝试为几个 Jenkins 作业建立一些动态构建参数。我已经找到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"]]

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

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

有人知道如何解决这些问题吗?

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-scriptler


    【解决方案1】:

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

    • 在主服务器上,或
    • 在运行作业的从站上(前提是从站已启动)。

    这个选择是通过Remote Script复选框做出的:来自插件文档:“如果选中了“Remote Script”复选框,那么脚本将在slave上执行从哪里开始构建。”

    例如,我已成功列出工作区中的文件,并使用此脚本与它们一起制作参数菜单(mytest 是我的工作名称):

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

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

    【讨论】:

    • 嗨 Christophe,谢谢你的例子,虽然它目前仅适用于主服务器(因为工作空间文件夹在从服务器上不存在),我会尝试使用 Jenkins 的 env.WORKSPACE 变量。不幸的是,这似乎也很棘手(参见stackoverflow.com/questions/21236268/…)。现在我放弃了,必须手动填写默认值。
    • @dag 我不明白。我只提到了工作区,因为我认为这是你想要达到的。顺便说一句,如果您的作业在主机上运行,​​则工作区在主机上,但如果作业在远程从机中运行,则工作区在从机上。实际上在我们的例子中,我能够到达某个地方的目录列表这与工作空间无关,它位于远程从站上。我们使用的 groovy 代码是:"ls -1 /opt/bin-releases".execute().text.
    • 嗨,Christophe,你说得对,我想访问上次运行时执行的服务器/从属工作区中的一个文件。我认为您的提案不可能,因为参数插件不知道最后一个作业在哪里运行,并且您提出的提案表明命令行版本(如"ls -1 workspace/mytest".execute().text 所示)仅适用于主目录结构,因为工作空间目录在从站上不存在。由于我没有进一步测试的可能性,这只是一个猜测。
    • 动态参数插件 --- 该插件的分发已被暂停...这出现在插件中...
    猜你喜欢
    • 2016-12-30
    • 2017-01-16
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2011-09-17
    • 1970-01-01
    • 2013-02-21
    • 1970-01-01
    相关资源
    最近更新 更多