Для параметризованной сборки с выбором результата на основе 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".