Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在jenkins管道中的阶段内动态生成代理_Jenkins_Kubernetes_Dynamic_Jenkins Pipeline_Agent - Fatal编程技术网

在jenkins管道中的阶段内动态生成代理

在jenkins管道中的阶段内动态生成代理,jenkins,kubernetes,dynamic,jenkins-pipeline,agent,Jenkins,Kubernetes,Dynamic,Jenkins Pipeline,Agent,我在管道作业中有此配置 def k8sTestPodTemplate(docker_image) { return """ apiVersion: v1 kind: Pod metadata: name: my-agent labels: name: my-agent spec: serviceAccountName: jenkins containers: - name: python image: ${docker_imag

我在管道作业中有此配置

def k8sTestPodTemplate(docker_image) {
 return """
 apiVersion: v1
 kind: Pod
 metadata:
   name: my-agent
   labels:
     name: my-agent
 spec:
   serviceAccountName: jenkins
   containers:
     - name: python
       image: ${docker_image}
       command: ["/bin/bash", "-c", "cat"]
       tty: true
"""
}

pipeline {
 agent none

 stages {
   stage('Run tests') {
     parallel {
       stage('Tests Python 3.5') {
         agent {
           kubernetes {
             defaultContainer 'jnlp'
             yaml k8sTestPodTemplate('python:3.5')
           }
         }
         steps {
           container('python') {
             sh "echo 'Hello from Python 3.5'"
           }
         }
       }
       stage('Tests Python 3.6') {
         agent {
           kubernetes {
             defaultContainer 'jnlp'
             yaml k8sTestPodTemplate('python:3.6')
           }
         }
         steps {
           container('python') {
             sh "echo 'Hello from Python 3.6'"
           }
         }
       }
       stage('Tests Python 3.7') {
         agent {
           kubernetes {
             defaultContainer 'jnlp'
             yaml k8sTestPodTemplate('python:3.7')
           }
         }
         steps {
           container('python') {
             sh "echo 'Hello from Python 3.7'"
           }
         }
       }
     }
   }
 }
}
但正如您所看到的,我可以很容易地将此代码改进为:

def k8sTestPodTemplate(docker_image) {
  return """
  apiVersion: v1
  kind: Pod
  metadata:
    name: my-agent
    labels:
      name: my-agent
  spec:
    serviceAccountName: jenkins
    containers:
      - name: python
        image: ${docker_image}
        command: ["/bin/bash", "-c", "cat"]
        tty: true
"""
}

def generateStage(docker_image) {
  return {
    stage("Tests ${docker_image}") {
      agent {
        kubernetes {
          defaultContainer 'jnlp'
          yaml k8sTestPodTemplate("${docker_image}")
        }
      }
      steps {
        container('python') {
          sh "echo ${docker_image}"
        }
      }
    }
  }
}

pipeline {
  agent none

  stages {
    stage('Run tests') {
      parallel {
        generateStage("python:3.5")
        generateStage("python:3.6")
        generateStage("python:3.7")
      }
    }
  }
}
但我不能让它工作。问题是詹金斯提出了一个错误

在步骤中未找到此类DSL方法“代理”


我在“step”指令中使用“agent”指令,并且动态生成代理。

不完全是答案,但可以使用脚本管道语法实现:不完全是答案,但可以使用脚本管道语法实现: