在同一个docker slave中运行多个阶段的Jenkins声明式管道

时间:2020-07-20 10:42:27

标签: jenkins jenkins-plugins jenkins-declarative-pipeline

客观

这里的目标是将脚本化的詹金斯管道迁移到声明式。脚本化管道在kubernetes管理的docker slave上运行,工作语法如下所示

 slave = 'dtr@tes.com/namespace/image:1.0'

dockerNode(image:slave)
{

   stage('1'){echo "1"}

   stage('2'){echo "2"} 

}

脚本化管道运行正常。

关注点

尝试使用dockerNode进行描述性管道,但在声明性中,仅在阶段内执行步骤后才允许使用dockerNode语法

例如:

pipeline{
  agent any 
  stages{
    stage('1and2'}{
      dockerNode(image:slave){

        echo "1"
        echo "2" 
    }
  }
 }
}

这使得关注一个阶段而不是多个阶段的大型步骤成为可能。因此,希望您的帮助了解如何更好地对齐并让多个阶段始终在同一容器中运行。容器图像是由kubernetes管理(带有docker镜像的kube pod)

1 个答案:

答案 0 :(得分:0)

要将一个容器用于所有步骤,您需要在代理部分中指定

pipeline{
  agent {
    label 'docker-agent-label'
  }
}

要使用like,您需要在“管理jenkins”->“管理节点和 云”->“配置云”->“添加新云”或使用现有云。 如果您的jenkins主机与k8s集成,则必须是kubernetes。

更新:

example of configuring docker agent template