Как создавать и редактировать файлы определений конвейера из заданного Jenkins кода DSL. - PullRequest
0 голосов
/ 22 мая 2019

У меня есть отличный код задания DSL (основной скрипт), который создает ~ 100 тестовых заданий.Подход заключается в том, что они должны быть выполнены вручную, так как мы хотим иметь конвейеры для их выполнения ночью.Таким образом, конвейерные задания (несколько) тоже будут созданы.Не проблема.

Но так как основной скрипт DSL groovy будет довольно большим, я хочу, чтобы соответствующий код определения конвейера (который загружаются конвейерные задания) был помещен в отдельные файлы.Поскольку существует так много заданий, я уже поместил конфигурацию всех заданий в отдельный файл, в котором они определены в MAP.Логика для создания всех тестовых заданий помещается в основной скрипт, и он проходит через MAP, расположенный в отдельном файле.Работает нормально.

Не хочу, чтобы имена заданий, которые должны быть сконфигурированы в определении конвейера, были жестко закодированы (Дублированная информация)!Таким образом, планировалось создать файлы определений конвейера из той же логики основного скрипта, которая создает тестовые задания.Затем вся соответствующая информация, такая как имена заданий, целевой хост и т. Д., Доступна для каждой итерации через MAP.

Любые идеи о том, как отдельные файлы (определение конвейера) могут создаваться и редактироваться в ведомом устройстве из сценария groovy job dsl.?

Я пробовал создавать файлы со стандартным Groovy кодом.Но было очевидно, что они были созданы в мастере Дженкинс.И это должно быть в подчиненном.

def newFile = new File("${WORKSPACE}/scripts/jenkins_job_dsl/pipeline.conf")
print "${newFile}"

Я получил это в начальном задании, когда использовался «новый файл»:

...
/home/builduser/workspace/Test_and_demo/Richard_Test/seed_job_richard/scripts/jenkins_job_dsl/pipeline.conf
FATAL: No such file or directory
13:33:50 java.io.IOException: No such file or directory
...

1 Ответ

0 голосов
/ 22 мая 2019

Ваша проблема - прочитать файл pipe.conf, который уже существует в начальном задании?

Вы должны иметь возможность использовать readFileFromWorkspace , например:

// read the file release.groovy from the seed job's workspace
// and configure a Groovy build step using that script
def releaseScript = readFileFromWorkspace('release.groovy')
job('example-1') {
    steps {
        groovyCommand(releaseScript)
    }
}

// read the file run.bat from a workspace of job project-a
// and use it to configure another job
def runScript = readFileFromWorkspace('project-a', 'run.bat')
job('example-2') {
    steps {
        batchFile(runScript)
    }
}
...