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

7 投票
1 回答
2956 浏览
提问于 2025-04-18 13:45

我想创建一个Jenkins任务,用来备份和部署某些数据库到一个远程的MongoDB实例。我希望这个构建过程可以设置参数,让用户在构建时从有效的MongoDB主机名列表中选择。当用户选择了有效的数据库主机名后,第二个参数选择框会动态填充该主机上所有有效的数据库名称。然后,一旦用户选择了数据库名称,这个名称会被存储在一个名为“DB”的参数中,以便传递给一个“执行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()

然后我希望“choicelist”以某种方式呈现,使其成为“DB”参数的可用选择。

我该如何实现这一点,特别是因为动态选择参数只接受groovy脚本,而不支持原生的python?

1 个回答

-1

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

顺便提一下,如果你想实现一个自助服务的门户网站,可以看看RunDeck。我最近发现这个工具,它似乎比Jenkins更容易使用。

撰写回答