передача змінних beetwen groovy файлів


9

Я керую багатьма роботами в Дженнінкі за допомогою плагіна DSL. Цей плагін використовує визначення .groovy, тому я думаю, навіть якщо хтось не використовує Дженкінса, але використання groovy може допомогти.

Як правило, я хочу створити додатковий файл, який може бути грувим файлом, JSON або YAML, будь-яким іншим. Важливо - можливість підключити цей файл до мого .groovy-файлу.

У цьому файлі я визначаю змінні (а не просто рядки), наприклад, IP-адресу адреси або інші речі, наприклад.

ip_gitlab: 1.2.3.4
default_user: admin

У своїх гройових файлах я хочу мати можливість використовувати ці змінні.

Такий підхід можливий у грубій формі?


Звичайно, це можливо. Наприклад, є groovy-lang.org/json.html .
smelm

Якщо можливо, визначити додатковий класний шлях у плагіні DSL. потім помістіть у папку, яку ви додасте до класних файлів, таких як class GLOBAL{ def a=111; def b=222; }. тоді в коді ви повинні мати доступ до ньогоGLOBAL.a
daggett

@daggett Я намагався, як ви писали, і завжди у мене виникає помилка: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'org.codehaus.groovy.runtime.InvokerHelper$1@641eff69' with class 'org.codehaus.groovy.runtime.InvokerHelper$1' to class 'javaposse.jobdsl.dsl.JobParent' Ця помилка виникає під час обробки вашого класу GLOBAL
rafal1337

я забув . для кожної визначеної змінної повинен бути staticпрефікс. class GLOBAL{ static def a=111; static def b=222; }. але помилка у вас дивна. чи можете ви показати змінну, яку ви оголосили, і як ви її використовуєте в dsl.
даггетт

1. Моя конфігурація dsl postimg.cc/TLHK5k6h 2. помилка під час обробки dsl postimg.cc/21F37jDs
rafal1337

Відповіді:


3

Я пропоную використовувати файл властивостей, як писав @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"

2
Це мінімально віднесена копія з іншої публікації; ви хоч хочете би дотримуватися посилань на посилання та називати автора.
Martijn Pieters

На жаль, що не працює в Дженкінс DSL, не вдається знайти файл із властивостями, але цей файл - та сама папка ...FATAL: test.properties (No such file or directory) java.io.FileNotFoundException: test.properties (No such file or directory)
rafal1337

@ rafal1337 Ви намагалися використовувати частковий / повний шлях файлу?
користувач7294900

@ user7294900 Так, я намагався кілька разів, але без позитивного ефекту.
rafal1337


2

Складіть 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
}

виглядає добре, але в DSL плагін у Дженкінса не працює:ERROR: (pipeline.groovy, line 1) No signature of method: pipeline.load() is applicable for argument types: (java.lang.String) values: [a_test.groovy]Possible solutions: job(java.lang.String), find(), folder(java.lang.String), job(java.lang.String, groovy.lang.Closure), find(groovy.lang.Closure), wait()
rafal1337

2

якщо ви хочете конкретної відповіді Дженкінса: Існує плагін постачальника файлів Config для джинкінів.

Ви можете зберігати файли конфігурацій / властивостей через керовані файли. Перейдіть до Manage Jenkins> Керовані файли та створіть новий файл. Він підтримує .groovy, .json, .xml та багато інших.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.