Hello David - Just wondering if you ever figured this out, just started seeing this very same thing yesterday. :( Regards and thanks in advance - Todd
On Monday, August 12, 2019 at 9:23:59 PM UTC-7, David Harvey wrote: > > Hi, > > I'm experiencing a strange issue with a specific build in Jenkins where > params is returning a null pointer exception. The Jenkinsfile being used is: > > #!groovy > > def paramsVar = [] > def rebuild = [$class: 'RebuildSettings', autoRebuild: true, rebuildDisabled: > false] > > if (env.BRANCH_NAME == 'master') { > paramsVar << choice(name: 'ENVIRONMENT', choices: ['int', 'iuat', > 'iprod']) << > choice(name: 'REGION', choices: ['us-east-1','eu-west-1']) > > rebuild << [$class: 'RebuildSettings', autoRebuild: false, > rebuildDisabled: true] > } > > properties( > [rebuild, > parameters( > paramsVar > ) > ] > ) > > pipeline { > agent { > dockerfile { > label "env-${params.ENVIRONMENT} && ${params.REGION}" > filename 'Dockerfile.agent' > args '-v /var/run/docker.sock:/var/run/docker.sock > --group-add 497' > } > } > > environment { > ENVIRONMENT_NAME = "${params.ENVIRONMENT}" > REGION = "${params.REGION}" > > MYSQL_KAFKA_CONNECT_CREDENTIALS = > credentials("l48-mysql-kafka-connect-credentials-${ENVIRONMENT_NAME}") > MYSQL_REVIEW_CREDENTIALS = > credentials("l48-mysql-review-credentials-${ENVIRONMENT_NAME}") > MYSQL_HOST = > credentials("l48-mysql-host-${ENVIRONMENT_NAME}") > MYSQL_DATABASE = 'review' > > KAFKA_CONNECT_BASE_URL = > credentials("l48-kafka-connect-base-url-${ENVIRONMENT_NAME}") > > ELASTICSEARCH_MONITORING_BASE_URL = > credentials("l48-es-monitoring-base-url-${ENVIRONMENT_NAME}") > ELASTICSEARCH_DOMAIN_BASE_URL = > credentials("l48-es-domain-base-url-${ENVIRONMENT_NAME}") > ELASTICSEARCH_MONITORING = 'elasticMonitoring' > ELASTICSEARCH_DOMAIN = 'elasticDomain' > } > > stages { > stage('Prepare build environment') { > steps { > script { > currentBuild.displayName = "#${BUILD_NUMBER} > ${ENVIRONMENT_NAME}@${REGION}" > currentBuild.description = "#${BUILD_NUMBER} > ${ENVIRONMENT_NAME}@${REGION}" > } > } > } > > stage('Deploy ES Monitoring Indexes') { > steps { > sh './elasticsearch.sh ${ELASTICSEARCH_MONITORING} > ${ELASTICSEARCH_MONITORING_BASE_URL}' > } > } > > stage('Deploy ES Domain Indexes') { > steps { > sh './elasticsearch.sh ${ELASTICSEARCH_DOMAIN} > ${ELASTICSEARCH_DOMAIN_BASE_URL}' > } > } > > stage('Deploy MySQL Schemas') { > steps { > sh './mysql.sh ${MYSQL_HOST} ${MYSQL_REVIEW_CREDENTIALS_USR} > ${MYSQL_REVIEW_CREDENTIALS_PSW} ${MYSQL_DATABASE}' > } > } > > stage('Deploy Kafka Connect Connectors') { > steps { > sh './kafka-connect.sh ${KAFKA_CONNECT_BASE_URL} > "jdbc:mysql://${MYSQL_HOST}:3306/${MYSQL_DATABASE}?user=${MYSQL_KAFKA_CONNECT_CREDENTIALS_USR}&password=${MYSQL_KAFKA_CONNECT_CREDENTIALS_PSW}&useSSL=false"' > } > } > > stage('Check Kafka Connect Connectors Status') { > steps { > sh './kafka-connect-status.sh ${KAFKA_CONNECT_BASE_URL}' > } > } > } > } > > > I've also tried with the more straightforward: > pipeline { > agent { > dockerfile { > label "env-${params.ENVIRONMENT} && ${params.REGION}" > filename 'Dockerfile.agent' > args '-v /var/run/docker.sock:/var/run/docker.sock > --group-add 497' > } > } > > parameters { > choice( > name: 'ENVIRONMENT', > choices: ['int', 'iuat', 'iprod'], > description: 'Environment to deploy to.' > ) > > choice( > name: 'REGION', > choices: ['us-east-1', 'eu-west-1'], > description: 'Region to deploy to.' > ) > } > > environment { > ENVIRONMENT_NAME = "${params.ENVIRONMENT}" > REGION = "${params.REGION}" > > MYSQL_KAFKA_CONNECT_CREDENTIALS = credentials( > "l48-mysql-kafka-connect-credentials-${ENVIRONMENT_NAME}") > MYSQL_REVIEW_CREDENTIALS = credentials( > "l48-mysql-review-credentials-${ENVIRONMENT_NAME}") > MYSQL_HOST = credentials("l48-mysql-host-${ > ENVIRONMENT_NAME}") > MYSQL_DATABASE = 'review' > > KAFKA_CONNECT_BASE_URL = credentials( > "l48-kafka-connect-base-url-${ENVIRONMENT_NAME}") > > ELASTICSEARCH_MONITORING_BASE_URL = credentials( > "l48-es-monitoring-base-url-${ENVIRONMENT_NAME}") > ELASTICSEARCH_DOMAIN_BASE_URL = credentials( > "l48-es-domain-base-url-${ENVIRONMENT_NAME}") > ELASTICSEARCH_MONITORING = 'elasticMonitoring' > ELASTICSEARCH_DOMAIN = 'elasticDomain' > MYSQL = 'mysql' > } > > stages { > stage('Prepare build environment') { > steps { > script { > currentBuild.displayName = "#${BUILD_NUMBER} ${ > ENVIRONMENT_NAME}@${REGION}" > currentBuild.description = "#${BUILD_NUMBER} ${ > ENVIRONMENT_NAME}@${REGION}" > } > } > } > > stage('Deploy ES Monitoring Indexes') { > steps { > sh './elasticsearch.sh ${ELASTICSEARCH_MONITORING} ${ > ELASTICSEARCH_MONITORING_BASE_URL}' > } > } > > stage('Deploy ES Domain Indexes') { > steps { > sh './elasticsearch.sh ${ELASTICSEARCH_DOMAIN} ${ > ELASTICSEARCH_DOMAIN_BASE_URL}' > } > } > > stage('Deploy MySQL Schemas') { > steps { > sh './mysql.sh ${MYSQL_HOST} ${MYSQL_REVIEW_CREDENTIALS_USR} > ${MYSQL_REVIEW_CREDENTIALS_PSW} ${MYSQL_DATABASE}' > } > } > > stage('Deploy Kafka Connect Connectors - MySQL') { > steps { > sh './kafka-connect.sh ${KAFKA_CONNECT_BASE_URL} ${MYSQL} > "jdbc:mysql://${MYSQL_HOST}:3306/${MYSQL_DATABASE}?user=${ > MYSQL_KAFKA_CONNECT_CREDENTIALS_USR}&password=${ > MYSQL_KAFKA_CONNECT_CREDENTIALS_PSW}&useSSL=false"' > } > } > > stage('Deploy Kafka Connect Connectors - Elasticsearch Monitoring' > ) { > steps { > sh './kafka-connect.sh ${KAFKA_CONNECT_BASE_URL} ${ > ELASTICSEARCH_MONITORING} ${ELASTICSEARCH_MONITORING_BASE_URL}' > } > } > > stage('Deploy Kafka Connect Connectors - Elasticsearch Domain') { > steps { > sh './kafka-connect.sh ${KAFKA_CONNECT_BASE_URL} ${ > ELASTICSEARCH_DOMAIN} ${ELASTICSEARCH_DOMAIN_BASE_URL}' > } > } > > stage('Check Kafka Connect Connectors Status') { > steps { > sh './kafka-connect-status.sh ${KAFKA_CONNECT_BASE_URL}' > } > } > } > } > > The error being generated is: > > java.lang.NullPointerException: Cannot get property 'params' on null object > at > org.codehaus.groovy.runtime.NullObject.getProperty(NullObject.java:60) > at sun.reflect.GeneratedMethodAccessor771.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) > at > org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:57) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125) > at > org.jenkinsci.plugins.pipeline.modeldefinition.Utils.getScriptPropOrParam(Utils.groovy:116) > at > org.jenkinsci.plugins.pipeline.modeldefinition.Utils$getScriptPropOrParam$17.call(Unknown > Source) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.jenkinsci.plugins.pipeline.modeldefinition.Utils$getScriptPropOrParam$17.call(Unknown > Source) > at > org.jenkinsci.plugins.pipeline.modeldefinition.model.Environment$EnvironmentResolver.getScriptPropOrParam(Environment.groovy:133) > at sun.reflect.GeneratedMethodAccessor8320.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > at > org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93) > at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213) > at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022) > at > org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:42) > at > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48) > at > org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113) > at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:158) > at > org.kohsuke.groovy.sandbox.GroovyInterceptor.onMethodCall(GroovyInterceptor.java:23) > at > org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:157) > at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:156) > at > org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:160) > at > org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:125) > at > org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:130) > at > com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17) > at WorkflowScript.run(WorkflowScript) > at WorkflowScript.run(WorkflowScript) > at WorkflowScript.run(WorkflowScript) > at WorkflowScript.run(WorkflowScript) > at > org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/jenkins_home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:484) > at > com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.callClosureForMapEntry(CpsDefaultGroovyMethods:5226) > at > com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2107) > at > org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.withCredentialsBlock(jar:file:/var/jenkins_home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:483) > at > org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.call(jar:file:/var/jenkins_home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:77) > at > org.jenkinsci.plugins.pipeline.modeldefinition.ModelInterpreter.inDeclarativeAgent(jar:file:/var/jenkins_home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/ModelInterpreter.groovy:611) > at > org.jenkinsci.plugins.pipeline.modeldefinition.agent.impl.DockerPipelineFromDockerfileScript.runImage(jar:file:/var/jenkins_home/plugins/pipeline-model-definition/WEB-INF/lib/pipeline-model-definition.jar!/org/jenkinsci/plugins/pipeline/modeldefinition/agent/impl/DockerPipelineFromDockerfileScript.groovy:57) > at > org.jenkinsci.plugins.docker.workflow.Docker$Image.inside(jar:file:/var/jenkins_home/plugins/docker-workflow/WEB-INF/lib/docker-workflow.jar!/org/jenkinsci/plugins/docker/workflow/Docker.groovy:135) > at ___cps.transform___(Native Method) > at > com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57) > at > com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109) > at > com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:82) > at sun.reflect.GeneratedMethodAccessor681.invoke(Unknown Source) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.lang.reflect.Method.invoke(Method.java:498) > 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:83) > at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174) > at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163) > at > org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129) > at > org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268) > at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163) > at > org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18) > at > org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51) > at > org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:174) > at > org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:347) > at > org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:93) > at > org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:259) > at > org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:247) > at > org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131) > at > jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28) > at > jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) > at java.lang.Thread.run(Thread.java:748) > > > > I've tried recreating the job within Jenkins but still get the same error. > > Does anyone have any pointers on what could be going wrong? > > Other jobs using parameters from both Jenkinsfile methods are working with > no issues. > > Thanks, > > David > -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/d7ad9f8c-830e-4f5d-ad87-bd57425b2a19%40googlegroups.com.