Доступ к параметрам jenkins env из GroovyScript в свойствах - PullRequest
1 голос
/ 08 марта 2020

У меня есть задание jenkins:

properties([
    parameters([
        [$class: 'ChoiceParameter', choiceType: 'PT_CHECKBOX', description: '''The name of the image to be used.''', filterLength: 1, filterable: true, name: 'OS', randomName: 'choice-parameter-15413073438404172', script: [$class: 'GroovyScript', fallbackScript: [classpath: [], sandbox: true, script: ''], script: [classpath: [], sandbox: true, script: '''templates = [
        "BB-Win7-x32-SP1",
        "BB-Win7-x64-SP1",
        "BB-Win10-x64-RS1",
        "BB-Win10-x64-RS2",
        "BB-Win10-x32-RS5"]

        return templates''']]]])
])
....
....

, которое работает и генерирует свойство флажка для GUI, как и ожидалось.

Теперь я хочу сгенерировать эти параметры динамически, на основе файла в моей рабочей области. Для этого мне нужна переменная окружения workspace внутри скрипта groovy. Как я могу это сделать?

1 Ответ

0 голосов
/ 08 марта 2020

Дженкинс должен выяснить все параметры, прежде чем запустить конвейер. Таким образом, ваша проблема в основном сводится к тому, «Как я могу запустить (произвольный) скрипт groovy до запуска конвейера?»

Для этого есть два варианта:

  1. Как я уже говорил, плагин ActiveChoice позволяет определить параметр, который возвращает скрипт. Затем Дженкинс запустит скрипт (не забудьте одобрить его), чтобы показать вам страницу «Построить с параметрами». Отладка это общеизвестно сложно, но это может go на большую длину.

  2. В качестве альтернативы, вы можете запустить сценарий конвейера, прежде чем запустить декларативный (основной), как описано например, в этот ответ . Это может выглядеть примерно так:

def my_choices_list = []

node('master') {
   stage('prepare choices') {
       // read the file contents
       def my_choices = sh script: "cat ${WORKSPACE}/file.txt", returnStdout:true
       // make a list out of it - I haven't tested this!
       my_choices_list = my_choices.trim().split("\n")
   }
}

pipeline {
   parameters { 
        choiceParam('OPTION', my_choices_list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...