如何在jenkins管道中启动docker并保持在同一个从插槽中?

如何在jenkins管道中启动docker并保持在同一个从插槽中?,docker,jenkins,jenkins-pipeline,dockerfile,Docker,Jenkins,Jenkins Pipeline,Dockerfile,在我的管道中,我希望执行Dockerfile,创建docker,启动它,并在创建的容器中继续执行以下步骤。我不想让那个容器占用一个新的jenkins从属槽,因为没有可用的 我已经在Jenkins多分支项目中做了类似的工作,但这次不能使用这种方法,因为这是一项特殊的工作,可以同时在回购协议的所有分支上运行。多分支方法没有意义 当该作业启动时,实际上是同一作业的几个实例启动了,但每个实例都指向不同的git回购。这些作业占用了从机上所有可用的插槽。然后,他们尝试启动容器,但没有可用的插槽。我想重复使用

在我的管道中,我希望执行Dockerfile,创建docker,启动它,并在创建的容器中继续执行以下步骤。我不想让那个容器占用一个新的jenkins从属槽,因为没有可用的

我已经在Jenkins多分支项目中做了类似的工作,但这次不能使用这种方法,因为这是一项特殊的工作,可以同时在回购协议的所有分支上运行。多分支方法没有意义

当该作业启动时,实际上是同一作业的几个实例启动了,但每个实例都指向不同的git回购。这些作业占用了从机上所有可用的插槽。然后,他们尝试启动容器,但没有可用的插槽。我想重复使用相同的插槽并继续,就像多分支管道作业一样

然后,我尝试在Master上运行checkout,然后在另一个节点上启动docker。这可能会起作用,但它意味着在主机上要做很多工作,并且从主机到从主机要复制很多repos。我真的不喜欢那个解决方案。事实上,在尝试执行Dockerfile之前,我甚至不知道如何将它复制到新的从属文件

pipeline {

   agent {label 'docker'}

   stages {

      stage('Base Dockerfile checkout') {
         steps {
            checkout([$class: 'GitSCM', 
            branches: [[name: 'master']], 
               doGenerateSubmoduleConfigurations: false, 
               extensions: [[$class: 'RelativeTargetDirectory', 
               relativeTargetDir: 'gipc_synthesis']], 
               submoduleCfg: [], 
               userRemoteConfigs: [[url: 'ssh://git@camtl1bitmirror.gad.local:7999/mtlstash/mvt/gipc_synthesis.git']]]
            ) 
         }


      } 

      stage('In Container steps') {

         agent {
            dockerfile {
               dir 'gipc_synthesis/dockerBuild/docker_SRC'
               label "docker"
               args '-v /etc/passwd:/etc/passwd -u 0:0'
            }
         }

         steps {
            // Do something in the container
...
使用它只会使我的整个詹金斯奴隶农场陷入停顿,因为所有的插槽都填满了结帐部分,然后没有可用的插槽来启动容器