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

container() doesn't work inside environment block

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Open (View Workflow)
    • Priority: Minor
    • Resolution: Unresolved
    • Labels:
      None
    • Environment:
      Jenkins 2.235.5 (official docker image)
      Pipeline: Declarative 1.7.2
      Kubernetes plugin 1.27.1.1
    • Similar Issues:

      Description

      The following declarative pipeline does not run the desired code in the JNLP container:

      final pod = '''
      apiVersion: v1
      kind: Pod
      spec:
        containers:
          - name: busybox
            image: busybox
            command: ['/bin/sh', '-c', 'sleep infinity & wait']
      '''
      
      final block = {
        sh returnStdout: true, script: 'git --version'
      }
      
      pipeline {
        agent {
          kubernetes {
            yaml pod
            defaultContainer 'busybox'
          }
        }
      
        environment {
          one = container('jnlp', block)
          two = container('jnlp') {
            sh returnStdout: true, script: 'git --version'
          }
        }
      
        stages {
          stage('A') {
            steps {
              sh 'echo $one'
              sh 'echo $two'
            }
          }
        }
      }
      

      So the assignment of environment variable one succeeds but two fails with a message like:

      /home/jenkins/agent/workspace/_test@tmp/durable-96f999a3/script.sh: line 1: git: not found
      

        Attachments

          Activity

          Hide
          vlatombe Vincent Latombe added a comment - - edited

          Looks like a declarative bug, or an unsupported syntax. Doesn't seem to be related to the kubernetes plugin.

          Attached the generated step tree view from the above pipeline, we can clearly see the second call isn't nested under container('jnlp').

          Show
          vlatombe Vincent Latombe added a comment - - edited Looks like a declarative bug, or an unsupported syntax. Doesn't seem to be related to the kubernetes plugin. Attached the generated step tree view from the above pipeline, we can clearly see the second call isn't nested under container('jnlp') .

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            tavin Tavin Cole
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated: