У нас есть несколько заданий: «первичное», «вторичное» и «резервное копирование» - у всех должны быть одинаковые параметры (версии выпуска, т.е. «1.5.1») - их около 15.
parameters{
string(name: 'service1', defaultValue: 'NA', description: 'Verison' )
string(name: 'service2', defaultValue: 'NA', description: 'Verison' )
string(name: 'service3', defaultValue: 'NA', description: 'Verison' )
}
Мой конвейер похож на приведенный ниже, как я могу использовать одни и те же вышеуказанные параметры для всех трех заданий сборки, не задавая параметры три раза?
//This will kick of the three pipeline scripts required to do a release in PROD
pipeline {
agent any
stages
{
stage('Invoke pipeline primary') {
steps {
build job: 'primary'
}
}
stage('Invoke pipeline secondary') {
steps {
build job: 'secondary'
}
}
stage('backup') {
steps {
build job: 'backup'
}
}
}
}
Я нашел этот ответ здесь , но, похоже, здесь используется отличный синтаксис, и я не уверен, может ли он также использоваться в декларативном конвейере, подобном приведенному выше?
Когда я попробовал это, я получил следующее:
Running on Jenkins in PipelineTest
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Invoke pipeline primary)
[Pipeline] build
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: No item named null found
Finished: FAILURE
Когда я запускаю этот первичный конвейер сам по себе, он работает как положено.
Спасибо!
Редактировать: пробовал ответ, предоставленный @hakamairi, но получите следующее, я не очень хорош в DSL, но пробовал несколько разных вариантов, и ни один не работал / у всех были похожие типы ошибок при ожидании ParamValue.
//This will kick of the three pipeline scripts required to do a release in PROD
pipeline {
agent any
parameters{
string(name: 'service1', defaultValue: 'NA', description: 'Version' )
string(name: 'service2', defaultValue: 'NA', description: 'Version' )
}
stages
{
stage('Invoke pipeline PrimaryRelease') {
steps {
build job: 'PythonBuildTest', parameters: params
}
}
}
}
Ошибка:
java.lang.UnsupportedOperationException: необходимо указать класс $ с
реализация интерфейса java.util.List в
org.jenkinsci.plugins.structs.describable.DescribableModel.resolveClass (DescribableModel.java:503)
в
org.jenkinsci.plugins.structs.describable.DescribableModel.coerce (DescribableModel.java:402)
в
org.jenkinsci.plugins.structs.describable.DescribableModel.injectSetters (DescribableModel.java:361)
в
org.jenkinsci.plugins.structs.describable.DescribableModel.instantiate (DescribableModel.java:284)
в
org.jenkinsci.plugins.workflow.steps.StepDescriptor.newInstance (StepDescriptor.java:201)
в org.jenkinsci.plugins.workflow.cps.DSL.invokeStep (DSL.java:208)
в org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod (DSL.java:153)
в
org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod (CpsScript.java:122)
at sun.reflect.GeneratedMethodAccessor956.invoke (неизвестный источник) в
sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
в java.lang.reflect.Method.invoke (Method.java:498) в
org.codehaus.groovy.reflection.CachedMethod.invoke (CachedMethod.java:93)
at groovy.lang.MetaMethod.doMethodInvoke (MetaMethod.java:325) в
groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1213) в
groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1022) в
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call (PogoMetaClassSite.java:42)
в
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:48)
в
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:113)
в org.kohsuke.groovy.sandbox.impl.Checker $ 1.call (Checker.java:157)
в
org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall (GroovyInterceptor.java:23)
в
org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall (SandboxInterceptor.java:133)
в org.kohsuke.groovy.sandbox.impl.Checker $ 1.call (Checker.java:155)
в
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall (Checker.java:159)
в
org.kohsuke.groovy.sandbox.impl.Checker.checkedCall (Checker.java:129)
в
com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall (SandboxInvoker.java:17)
Причина: java.lang.IllegalArgumentException: не удалось создать экземпляр
{job = PythonBuildTest, параметры = {service1 = NA,