#maven #jenkins #jenkins-pipeline #jenkins-groovy #jenkins-declarative-pipeline
#maven #дженкинс #дженкинс-конвейер #дженкинс-заводной #дженкинс-декларативный-конвейер
Вопрос:
Я новичок в Дженкинсе, пожалуйста, помогите мне в этом. У меня есть проект maven, который немного сложен, поэтому я разделил тесты с помощью TestNG xmls. На основе потока выполнения я выберу соответствующий XML-файл для создания проекта. На данный момент я создаю сценарий вручную, выбирая требуемый XML-файл, как показано ниже.
Я установил параметр выбора (name= TestSuite), который включает в себя все XML-файлы и включает команду mvn clean test в разделе сборки.
mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite
Когда я создам, он получит выбранное значение из выпадающего списка параметров выбора и выполнится.
Но мое требование заключается в том, что я хочу интегрировать это для периодического запуска сборки в определенный период времени. Для этого я попытался использовать «Параметры активного выбора», но, пожалуйста, помогите мне, как вызвать выбранные параметры флажка и продолжить mvn install test
Ниже приведен подход, который я использовал.
- Я создал сценарий конвейера для создания «Параметров активного выбора и ссылочных параметров»
- Затем я попытался извлечь выбранные значения, используя сценарии `echo»: $ {params.Скрипты}»
Ниже приведены мои параметры,
- Параметр активного выбора: поток
- Реактивный параметр активного выбора: сценарии
- Активный ссылочный параметр: информация о потоке
«Скрипты» будут включать флажки и файлы xml
В этом сценарии, как я передам выбранный xml mvn clean test
, потому что на данный момент он передает все выбранные значения с разделителями-запятыми как caseCreation.xml,testng.xml
. В связи с этим, как я могу отделить каждый выбранный XML-файл и передать его mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite
.
А также, пожалуйста, помогите мне найти лучший подход к периодическим сборкам в определенный период времени, который мог бы удовлетворить вышеуказанный сценарий.
Заранее спасибо.
`
Ответ №1:
Я хотел бы порекомендовать плагин, который я сам использую для запуска заданий на основе синтаксиса cron с возможностью указания параметров: Параметризованный планировщик
properties([
pipelineTriggers([
parameterizedCron('''
0 20 * * 1-5 %gitRevision=desktop/dev;brokerName=robotests
0 00 * * 1-5 %gitRevision=master;brokerName=robotests
''')
]),
])
Если я вас правильно понял, этого должно быть достаточно, чтобы определить несколько запусков с разными параметрами.
Если вы хотите использовать значение параметра активного выбора, то вы должны понимать, что он хранит все значения в виде строки. Используйте Groovy magic для преобразования строки в список и укажите требуемый индекс (разделите его), например
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${Scripts.tokenize(',')[0]}"
будет вашим первым значением
Комментарии:
1. Спасибо за ответ. Я попробовал со вторым вариантом. Это работает, но я хочу знать, как мне нужно будет выполнять итерацию между выбранными параметрами с помощью сценария конвейера. например: если я выберу 3 варианта из «Скриптов», как я напишу сценарий конвейера, чтобы выполнить итерацию между всеми выбранными параметрами в параметре Scripts
Ответ №2:
Ниже приведен пример декларативного конвейера:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
Scripts.tokenize(',').each{
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${it}"
}
}
}
}
}
}
Сценарий:
node (){
stage("Build") {
Scripts.tokenize(',').each{
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${it}"
}
}
}