如何执行 shell 命令来填充 Jenkins 动态选择参数插件

Posted

技术标签:

【中文标题】如何执行 shell 命令来填充 Jenkins 动态选择参数插件【英文标题】:How to execute a shell command to populate a Jenkins Dynamic Choice Parameter Plugin 【发布时间】:2014-09-08 20:13:19 【问题描述】:

我想创建一个 Jenkins 作业,在其中我将某些数据库备份并部署到远程 MongoDB 实例。我希望这个构建被参数化,以便在构建时用户从有效的 MongoDB 主机名列表中选择,然后一旦用户选择了有效的数据库主机名,第二个列表参数选择框将动态填充所有有效的数据库名称在那个主机名上。然后,一旦用户选择了 DB 名称,该名称将存储在参数“DB”中,该参数可以传递给构建步骤“Execute Shell”脚本以执行实际工作。

我的问题是我需要一种在 Jenkins 动态参数(级联)插件中执行脚本的方法,该插件将运行一个 shell(或理想情况下,python)脚本,该脚本将返回一个有效数据库名称列表选定的主机。我无法获取插件的 groovy 脚本部分来在本地操作系统上执行 shell 命令(就像“执行 shell”构建步骤一样)。

理想情况下,我想运行这样的东西,其中“MONGOHOST”是用户选择的第一个参数:

#!/usr/bin/env python
from pymongo import MongoClient
client = MongoClient('mongodb://$MONGOHOST:27017/')
choicelist = client.database_names()
client.close()

然后,我希望“选择列表”以这样的方式呈现,因为它们被填充为“DB”参数的可用选项。

我怎样才能做到这一点,特别是因为 Dynamic Choice 参数只接受 groovy 脚本而不接受原生 python?

【问题讨论】:

我知道这是一年前问的,但为什么不从 groovy 脚本运行 python 脚本呢? 我也有同样的问题,你做到了吗?怎么样? 【参考方案1】:

通常动态参数插件只是从简单的 ini 文件中加载选项。因此,如果您想更新可用选项列表,您只需在 Jenkins 实例上更新这些文件。

顺便说一句,如果您正在尝试实施自助服务门户,您可能想看看我最近发现的 RunDeck,它似乎比 Jenkins 更加用户友好。

【讨论】:

以上是关于如何执行 shell 命令来填充 Jenkins 动态选择参数插件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 shell 命令中发送 Jenkins 版本号作为参数,该命令将在构建结束后执行

jenkins 命令找不到

jenkins执行shell脚本 命令被解析成两行了 导致自行不成功

jenkins执行shell命令提示找不到命令解决办法

在Jenkins中配置执行远程shell命令

远程(jenkins)调用shell 不能正常结束