如何在声明性管道中定义多个容器?

cha*_*dan 9 jnlp jenkins kubernetes jenkins-pipeline

我正在使用kuberntes-plugin.在其自述文件中,它给出了如何使用多个容器图像编写脚本化管道

podTemplate(label: 'mypod', containers: [
    containerTemplate(name: 'maven', image: 'maven:3.3.9-jdk-8-alpine', ttyEnabled: true, command: 'cat'),
    containerTemplate(name: 'golang', image: 'golang:1.8.0', ttyEnabled: true, command: 'cat')
  ]) {
    node('mypod') { 
Run Code Online (Sandbox Code Playgroud)

我尝试了以下的声明性管道.

pipeline {
  agent {
    kubernetes {
      //cloud 'kubernetes'
      label 'mypod'
      containerTemplate {
        name 'maven'
        image 'maven:3.3.9-jdk-8-alpine'
        ttyEnabled true
        command 'cat'
      }
      containerTemplate {
        name 'containtertwo'
        image 'someimage'
        ttyEnabled true

      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

它创建一个只有一个容器的pod.

如何使用多个containerTemplates与声明管道?

maf*_*ffo 2

这不是解决您问题的方法,而是我查看后发现的一些信息。

KubernetesDeclarativeAgent只有一个containerTemplate. containerTemplate所使用的容器将位于您收集的容器底部的那个容器中。

在你的例子中它将是containtertwo.

您不能有多个顶级agents,并且在一个代理内也不能有多个kubernetes。现在你不能拥有多个容器。我希望如果为此抛出某种错误或警告。

我能想到两种解决方法。如果您必须使用声明性,那么您可以将 an 添加agent到您的stage,但这可能会导致其自身的问题。另一个是脚本化管道,这就是我要做的。

关于这方面的文档还有很多不足之处。