Jenkins Docker管道停留在“等待下一个可用执行器”上

时间:2019-02-21 16:30:37

标签: jenkins jenkins-pipeline

在我的项目中,我有一个Jenkins管道,该管道应在提供的Docker映像上执行两个阶段,并在同一台机器上但在容器外部执行第三阶段。在同一台机器上运行此第三阶段至关重要,因为前一阶段会产生一些稍后需要的输出。这些文件存储在通过槽装入的计算机中。

为了确保可以在第三阶段访问这些文件,我手动选择一个特定的节点。这是我的管道(做了一些修改,因为它是从工作中来的):

pipeline {
    agent {
        docker {
            label 'jenkins-worker-1'
            image 'custom-image:1.0'
            registryUrl 'https://example.com/registry'
            args '-v $HOME/.m2:/root/.m2'
        }
    }
    stages {
        stage('Test') {
            steps {
                sh 'mvn test'
            }
        }
        stage('Package') {
            steps {
                sh 'mvn package'
                sh 'mv target workdir/'
            }
        }
        stage('Upload') {
            agent {
                node {
                    label 'jenkins-worker-1'
                }
            }
            steps {
                sh 'uploader.sh workdir'
            }
        }
    }
}

该节点已预先配置为可以上传,因此我不能简单地从Docker容器上传已构建的目标,而必须从物理计算机上完成。

这是我的问题:尽管前两个阶段运行良好,但第三个阶段无法启动,因为:“等待下一个可用的执行程序”突然出现在日志中。很明显,节点正在等待自身,我无法使用其他计算机。看起来Docker正在阻止某些东西,詹金斯(Jenkins)认为该节点很忙,因此它永远等待着。

我正在寻找一种解决方案,该解决方案使我可以在同一台机器上在容器内外运行阶段。

显然,嵌套的阶段功能可以解决此问题,但不幸的是,自管道插件1.3版开始,该功能就可用,但是我的节点具有1.2.9。

0 个答案:

没有答案