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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jenkinsci-users/d7ad9f8c-830e-4f5d-ad87-bd57425b2a19%40googlegroups.com.