Передача переменных между файлами Groovy - PullRequest
9 голосов
/ 09 октября 2019

Я управляю многими работами в Jenkins с помощью плагина DSL. Этот плагин использует определения .groovy, поэтому я думаю, что даже если кто-то не использует Jenkins, но использование groovy может помочь.

Как правило, я хочу создать дополнительный файл, который может быть файлом groovy,JSON или YAML, что угодно. Важна возможность подключения этого файла к моему файлу .groovy.

В этом файле я определяю переменные (а не просто строки), например, IP-адрес или другие вещи, например.

ip_gitlab: 1.2.3.4
default_user: admin

В моих обычных файлах я хочу использоватьэти переменные.

Какой подход возможен в Groovy?

Ответы [ 3 ]

2 голосов
/ 17 октября 2019

Создайте groovy файл и определите некоторую общую информацию и используйте load.

Например, hello.conf (написанный groovy)

build_name = 'hello'

build_config = [
    'git': 'your git repository',
    'build_job': ['bulid_a', 'build_b']
]

И используйте его как load

load 'hello.conf'

println(build_name)
for (job in build_config['build_job']) {
    build job: job
}
2 голосов
/ 18 октября 2019

если вам нужен конкретный ответ Jenkins: для jenkins есть плагин Config File Provider .

Файлы конфигурации / свойств можно хранить через управляемые файлы. Перейдите в Управление Jenkins> Управляемые файлы и создайте новый файл. Он поддерживает .groovy, .json, .xml и многие другие.

Получив этот файл, вы можете загрузить указанный файл в задание, используя флажок Предоставить файл конфигурации, который автоматически загрузит файл в переменную env. .

2 голосов
/ 15 октября 2019

Я предлагаю использовать файл свойств , как @JBaruch написал

ip_gitlab=1.2.3.4
default_user=admin

И загрузить его

Properties properties = new Properties()
File propertiesFile = new File('test.properties')
propertiesFile.withInputStream {
    properties.load(it)
}

Тогда вы можете использоватьэто, получите ip например:

def ipPropertyName= 'ip_gitlab'
properties."$ipPropertyName"
...