steps - jenkinsfile post action
¿Cómo uso Jenkins Pipeline properties step? (1)
El uso de properties
con sintaxis de método explícito funcionará, es decir:
properties( [ ... ] )
lugar de properties [ ... ]
Alternativamente, funcionará sin si especifica el nombre del parámetro, por ejemplo:
properties properties: [ ... ]
Por ejemplo, definir tres propiedades es tan fácil como:
properties([
parameters([
string(name: ''submodule'', defaultValue: ''''),
string(name: ''submodule_branch'', defaultValue: ''''),
string(name: ''commit_sha'', defaultValue: ''''),
])
])
/* Accessible then with : params.submodule, params.submodule_branch... */
Estoy estudiando las capacidades de Jenkins Pipeline: Multibranch. Se dice que un paso de properties
recientemente introducido podría ser útil allí, pero no puedo ver cómo funciona y cuál es su propósito.
Su mensaje de sugerencia no parece ser muy claro:
Actualiza las propiedades del trabajo que ejecuta este paso. Principalmente útil a partir de flujos de trabajo multibranquios, de modo que el mismo Jenkinsfile pueda codificar lo que de otro modo sería la configuración del trabajo estático.
Así que creé un nuevo Pipeline con esto como un script (pegado directamente en Jenkins no en SCM):
properties [[$class: ''ParametersDefinitionProperty'',
parameterDefinitions: [[$class: ''StringParameterDefinition'',
defaultValue: '''', description: '''', name: ''PARAM1'']]
]]
Lo ejecuté y no pasó nada, el trabajo no recibió un nuevo parámetro y, aunque lo hiciera, no entiendo por qué podría necesitarlo. ¿Alguien podría explicar?
ACTUALIZACIÓN1 : traté de poner un Pipeline ficticio con propiedades en mi repositorio git, luego configuré un trabajo multibranquio.
println 1
properties [[$class: ''ParametersDefinitionProperty'', parameterDefinitions: [[$class: ''StringParameterDefinition'', defaultValue: ''str1'', description: '''', name: ''PARAM1'']]], [$class: ''RebuildSettings'', autoRebuild: false, rebuildDisabled: false]]
println 2
Encontró mi sucursal, creó un trabajo pero la construcción falló con:
groovy.lang.MissingPropertyException: No such property: properties for class: groovy.lang.Binding
at groovy.lang.Binding.getVariable(Binding.java:62)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:185)
at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241)
at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)
at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:23)
at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:17)
at WorkflowScript.run(WorkflowScript:2)
at ___cps.transform___(Native Method)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:62)
at com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
at com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:54)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
at com.cloudbees.groovy.cps.Next.step(Next.java:58)
at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:154)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:19)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:33)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable$1.call(SandboxContinuable.java:30)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:106)
at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:30)
at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:164)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:277)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$000(CpsThreadGroup.java:77)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:186)
at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:184)
at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:47)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:112)
at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
ACTUALIZACIÓN2 : cuando puse el mismo script (como en UPD1) de nuevo en Jenkins y lo ejecuta, solicitó un nuevo method groovy.lang.GroovyObject getProperty java.lang.String
permiso method groovy.lang.GroovyObject getProperty java.lang.String
. Lo aprobé, la compilación se volvió verde, sin embargo, aún no aparecieron cambios en la configuración del trabajo.
Mi env es: Jenkins 1.625.3, Pipeline + Multibranch 1.13