Jenkins — Active Choice: PostgreSQL — Вернуть результат SELECT запроса

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

Метки: Метки

Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии