需求:
使用Jenkins跑CI/CD任务时,由于生产环境主机数量及配置频繁变动,现需要实现Jenkins自动加载已有节点信息的功能(而不是每次都手动修改pipeline代码),加载后在Web界面(点击“构建”后)以单选或多选框的形式显示出来。
实现思路:
- 执行shell命令,拿到相关节点信息
grep -E '^Host ' /var/lib/jenkins/.ssh/test.conf | awk '{print \$2}' | tr '\\n' ','
- 借助getHosts函数返回一个数组或字符串给Jenkins parameters,choice可以接收数组类型,extendedChoice的value只支持接收字符串。
单选框实现代码:
// 从 /var/lib/jenkins/.ssh/test.conf 获取所有配置的主机名
def getHosts() {
// 在 node 块中调用 sh 步骤
node {
// 执行获取主机列表的脚本,并将其输出转换为 List
def hosts = sh(script: "grep -E '^Host ' /var/lib/jenkins/.ssh/test.conf | awk '{print \$