Для параметризованной сборки с выбором результата на основе SQL запроса, понадобится плагин Active Choices
Переходим в настройки Jenkins‘а
Раздел «Управление плагинами»
Переходим к вкладке «Доступные» и в поиске указываем «Active Choices»
Устанавливаем его. Так же необходим плагины:
Создаем «New Item» — «Pipeline«, указываем, что это будет параметризованная сборка, и добавляем параметр «Active Choices Parameter»
Указываем, что это «Groovy Script» и вставляем туда следующее:
import groovy.sql.Sql import java.sql.Driver credentialsId = 'artem-services-rds-credentials' url = 'artem-services-rds.xxxxxxxxxxxx.eu-central-1.rds.amazonaws.com:5432/postgres' def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials( com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, Jenkins.instance, null, null ).find{ it.id == credentialsId } def driver = Class.forName('org.postgresql.Driver').newInstance() as Driver def props = new Properties() props.setProperty("user", "${creds.username}") props.setProperty("password", "${creds.password}") def conn = driver.connect("jdbc:postgresql://${url}", props) def sql = new Sql(conn) def artifact = [] artifact.add("Not selected") def rows = sql.rows("select * from users").each { row -> artifact.add("$row.first_name") } return artifact
Где значение переменных, «credentialsId» — Jenkins Credentials ID с логином и паролем для подключения к базе данных;
«url» — строка подключения к базе (endpoint + port + db name);
Данный Active Choice делает SELECT запрос к таблице «users» и возвращает только значения полей «first_name«, так же на первую позицию результата добавляет «Not selected«.