Описание
Я преобразую свой проект jenkinsfiles в общую библиотеку, создаю повторно используемые методы в groovy. Я использую плагин extended_choice_parameter для параметризованной сборки в Jenkins. Я использую это для передачи значений, таких как кластер, этап, учетные данные и т. Д. c на работу Дженкинса. Теперь я хочу использовать разделяемую библиотеку Jenkins, где я могу определять функции с параметрами и вызывать их в jenkinsfile с аргументами.
Задача
При использовании разделяемой библиотеки для параметров, которая является блоком внутри «конвейера» в jenkinsFile я получаю ошибку, связанную с использованием функции параметра. Я создал этот файл jobParams. groovy
List commonParams() {
//return list of parameters
def paramsList = [
choice(name: 'stage', choices: ['lab', 'dev', 'qa', 'uat', 'prod'], description: 'select stage name' ),
choice(name: 'playbook',
choices: [ '',
'Linux',
'Unix',
'CentOS',
'Ubuntu',
'Debian'
],
description: 'select the playbook to deploy'
),
credentials(name: 'sshCredentialsId', defaultValue: 'lc_ikep_ansible', credentialType: "Username with password", required: true, description: 'SSH credentials for Ansible' ) ,
string(name: 'ansibleTags', defaultValue: '', description: 'Type in ansibleTags separated by space, example: "pre-install ikep-acls"'),
string(name: 'extraVars', defaultValue: '', description: 'Type in extraVars in format: --extra-vars=\'{key1: {key2: \"value2\", key3: \"value3\"}}\''),
choice(name: 'verboseLogging', choices: ['', '-v', '-vvv', '-vvvv'], description: 'Select ansible verbose logging'),
booleanParam( name: 'forceDeploy',
defaultValue: false,
description: 'Activate to force deployment for non-master branches'
)
]
return paramsList
}
Теперь я вызываю этот список в jenkinsfile, так как эти параметры генерируются до того, как мы нажимаем BUILD в jenkins. Используя следующий код, я могу напечатать все параметры, определенные в списке выше. Но теперь, как я могу использовать это как параметр для генерации параметров сборки в Jenkins.
/* Pipeline */
def commonParams = jobParams.commonParams()
String listAsString = "[\"${commonParams.join('", "')}\"]"
echo "printing variables ${listAsString}"
Пожалуйста, предложите, поскольку я не нашел действительный вариант использования при поиске inte rnet. Внутри блок конвейера в файле jenkins Я попытался выполнить следующее, но выдает ошибку, указывающую
pipeline {
agent { label "ansibleDeployments"}
options {
ansiColor('xterm')
disableConcurrentBuilds()
}
environment {
ansibleTags = 'all'
}
parameters {
(listAsString)
}
ОШИБКА
WorkflowScript: 67: Expected a build parameter definition @ line 67, column 5.
(listAsString)
^