Jenkins - 选择参数 - mysql 数据库查询返回列表

Posted

技术标签:

【中文标题】Jenkins - 选择参数 - mysql 数据库查询返回列表【英文标题】:Jenkins - choice parameter - mysql database query return list 【发布时间】:2016-03-29 18:57:13 【问题描述】:

Jenkins 的新用户。我正在尝试替换使用网站的旧构建系统,其中一部分有一个下拉菜单,该菜单使用 mysql 中的 SELECT 查询提供旧构建列表。这允许用户根据需要部署或删除构建。

目标是在 Jenkins 中设置一个选择参数(有很多不同的选择插件 -Dynamice、Active、Extended 等,我不确定该使用哪个),以便用户可以从列表中选择构建.

使用 Scriptler 插件,我能够运行以下代码(已编辑)并返回构建列表,这正是我想要的:

import groovy.sql.Sql
def sql = Sql.newInstance('jdbc:mysql://localhost:3306/test', 'root', '', 'com.mysql.jdbc.Driver')
String sqlString = "SELECT BVersion FROM BuildTable WHERE Branch = '$BUILD_NAME ORDER BY BuildDate DESC Limit 10;"
sql.eachRow(sqlString) row ->  
    println row[0]  

我也想进行变量替换,以便用户在上面的选择中选择一个 $BUILD_NAME,这将根据该选择动态返回构建列表。

但是,当我将代码添加为 scriptler 代码或 groovy 脚本时,我发现两者都不起作用并且我得到一个空白字段。为了让这个返回一个选择,每行一个选择,我缺少什么?

感谢您提供的任何帮助。 D

【问题讨论】:

【参考方案1】:

您需要将结果放入数组中,而不是打印出来。

代码重写:

import groovy.sql.Sql

def output = []

def sql = Sql.newInstance('jdbc:mysql://localhost:3306/test', 'root', '', 'com.mysql.jdbc.Driver')
String sqlString = "SELECT BVersion FROM BuildTable WHERE Branch = '$BUILD_NAME ORDER BY BuildDate DESC Limit 10;"
sql.eachRow(sqlString) row ->  
    output.push(row[0])


return output

如果您想订购输出,只需:

return output.sort()

干杯。

【讨论】:

以上是关于Jenkins - 选择参数 - mysql 数据库查询返回列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 System Groovy 选择参数访问可扩展选择中的 Jenkins 作业参数变量

Jenkins 在 groovy 脚本中检索主动选择参数

Jenkins参数化构建

Jenkins - 动态选择参数 - 从列表中删除文件扩展名

如何在 jenkins 中部署,根据参数选择从特定的 git 分支获取源代码

41-Jenkins-Git参数实现分支动态选择