Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-50312

Build hangs when invalid envVar key is used

XMLWordPrintable

    • Icon: Improvement Improvement
    • Resolution: Unresolved
    • Icon: Minor Minor
    • kubernetes-plugin
    • None
    • Jenkins ver. 2.89.4, Kubernetes plugin 1.3.2

       

      Summary

      Specifying a containerTemplate with envVars: [envVar(key: 'test.key', value: 'value')] fails (on Kubernetes version <1.8) and user is not notified of the failure.

      Description

      I was trying to configure an environment variable with a dot (".") in the name (for Elasticsearch, where it's suggested in their documentation) for a containerTemplate, the job didn't fail but also didn't finish. It got stuck at provisioning a pod.

      Defining non-C-identifier env variable names did not work prior to Kubernetes version 1.8 and we're using 1.7, so it's expected that the pod creation fails. However, I'd expect the job to also fail and to see an informative error message in the job output.

      Currently, the job hangs with the following message:

      Still waiting to schedule task
      All nodes of label ‘pipeline-docker-build-1748220349’ are offline

      When looking at the logs for the plugin, the following logs repeat multiple times, with different suffixes for the pod name:

       

      Mar 21, 2018 11:36:53 AM FINE org.csanchez.jenkins.plugins.kubernetes.KubernetesCloud
      In provisioning : [pipeline-docker-build-1748220349-zn6bq-dxt2q]
      Mar 21, 2018 11:36:53 AM FINE org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher
      Creating Pod: pipeline-docker-build-1748220349-zn6bq-dxt2q in namespace jenkins
      Mar 21, 2018 11:36:54 AM WARNING org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher launch
      Error in provisioning; agent=KubernetesSlave name: pipeline-docker-build-1748220349-zn6bq-dxt2q, template=PodTemplate{, name='pipeline-docker-build-1748220349-zn6bq', namespace='jenkins', label='pipeline-docker-build-1748220349', volumes=[org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume@2fae427c], containers=[ContainerTemplate{..}, ContainerTemplate{name='es', image='docker.elastic.co/elasticsearch/elasticsearch-oss:6.2.2', envVars=[KeyValueEnvVar [getValue()=value, getKey()=test.key]]}, ContainerTemplate{..}, ContainerTemplate{..}]}
      io.fabric8.kubernetes.client.KubernetesClientException: Failure executing: POST at: https://kubernetes.default.svc.cluster.local/api/v1/namespaces/jenkins/pods. Message: Pod "pipeline-docker-build-1748220349-zn6bq-dxt2q" is invalid: spec.containers[1].env[1].name: Invalid value: "test.key": a valid C identifier must start with alphabetic character or '_', followed by a string of alphanumeric characters or '_' (e.g. 'my_name',  or 'MY_NAME',  or 'MyName', regex used for validation is '[A-Za-z_][A-Za-z0-9_]*'). Received status: Status(apiVersion=v1, code=422, details=StatusDetails(causes=[StatusCause(field=spec.containers[1].env[1].name, message=Invalid value: "test.key": a valid C identifier must start with alphabetic character or '_', followed by a string of alphanumeric characters or '_' (e.g. 'my_name',  or 'MY_NAME',  or 'MyName', regex used for validation is '[A-Za-z_][A-Za-z0-9_]*'), reason=FieldValueInvalid, additionalProperties={})], group=null, kind=Pod, name=pipeline-docker-build-1748220349-zn6bq-dxt2q, retryAfterSeconds=null, additionalProperties={}), kind=Status, message=Pod "pipeline-docker-build-1748220349-zn6bq-dxt2q" is invalid: spec.containers[1].env[1].name: Invalid value: "test.key": a valid C identifier must start with alphabetic character or '_', followed by a string of alphanumeric characters or '_' (e.g. 'my_name',  or 'MY_NAME',  or 'MyName', regex used for validation is '[A-Za-z_][A-Za-z0-9_]*'), metadata=ListMeta(resourceVersion=null, selfLink=null, additionalProperties={}), reason=Invalid, status=Failure, additionalProperties={}).
      	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.requestFailure(OperationSupport.java:470)
      	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.assertResponseCode(OperationSupport.java:409)
      	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:379)
      	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleResponse(OperationSupport.java:343)
      	at io.fabric8.kubernetes.client.dsl.base.OperationSupport.handleCreate(OperationSupport.java:226)
      	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.handleCreate(BaseOperation.java:769)
      	at io.fabric8.kubernetes.client.dsl.base.BaseOperation.create(BaseOperation.java:356)
      	at org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher.launch(KubernetesLauncher.java:105)
      	at hudson.slaves.SlaveComputer$1.call(SlaveComputer.java:285)
      	at jenkins.util.ContextResettingExecutorService$2.call(ContextResettingExecutorService.java:46)
      	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)
      

       

      Mar 21, 2018 11:36:54 AM FINER org.csanchez.jenkins.plugins.kubernetes.KubernetesLauncher
      Removing Jenkins node: pipeline-docker-build-1748220349-zn6bq-dxt2q

       

      Mar 21, 2018 11:36:54 AM INFO org.csanchez.jenkins.plugins.kubernetes.KubernetesSlave _terminate
      Terminating Kubernetes instance for agent pipeline-docker-build-1748220349-zn6bq-dxt2q
      Mar 21, 2018 11:36:54 AM WARNING org.csanchez.jenkins.plugins.kubernetes.KubernetesSlave _terminate
      Failed to delete pod for agent jenkins/pipeline-docker-build-1748220349-zn6bq-dxt2q: not found

       

            Unassigned Unassigned
            deiwin Deiwin Sarjas
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated: