【问题标题】:Jenkins - choice parameter - mysql database query return listJenkins - 选择参数 - mysql 数据库查询返回列表
【发布时间】: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

【问题讨论】:

    标签: mysql jenkins groovy


    【解决方案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()
    

    干杯。

    【讨论】:

      猜你喜欢
      • 2014-02-26
      • 1970-01-01
      • 2014-11-29
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 2017-01-05
      • 1970-01-01
      • 2012-10-21
      相关资源
      最近更新 更多