詹金斯声明管道不会与码头工人群
问题描述:
运行这个简单的流水线工作:詹金斯声明管道不会与码头工人群
pipeline {
agent { label 'docker-swarm' }
/* ------------------- */
stages {
stage("Build") {
agent {
docker {
reuseNode true
image 'maven:3.5.0-jdk-8'
}
}
steps {
sh 'mvn -version'
}
}
}
}
产生以下错误:Queued: All nodes of label ‘docker-swarm’ are offline
后约1分钟的错误信息更改为:Cannot connect to the Docker daemon. Is the docker daemon running on this host?
奇怪的是,当我在Manage Jenkins → Cloud
测试连接时,它可以连接没有问题:
有人有个想法很热解决这个问题吗?
答
更新11/27/2017:该屏幕截图显示了一个不正确的配置,它不使用swarm,而是使用单个管理器节点。要使用群,我切换到端口3376
和测试连接输出更改为Version = swarm/1.2.8, API Version = 1.22
。我注意到我的错误,因为从来没有在群中的其他节点上看到构建运行,并且swarm管理器不知所措。
在原始问题中,不清楚正在使用各种Jenkins插件的版本,也不清楚群集是如何配置的。
我已经成功地使用:
- 詹金斯2.73.3
- 泊坞窗插件1.0.4
- 独立(或称传统)泊坞群
在我写这篇文章的时候, Docker Plugin不支持较新的Docker Swarm模式。虽然一个非Swarm码头引擎可能会起作用。
凭据提供连接到群所需要的证书。我记得我花了几次尝试才得到这个权利。
下面的管道工程:
pipeline {
agent {
docker 'maven:3.5.0-jdk-8'
}
stages {
stage('Build') {
steps {
sh 'mvn -version'
}
}
}
}
给予输出:
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T19:39:06Z)
Maven home: /usr/share/maven
Java version: 1.8.0_141, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en, platform encoding: UTF-8
OS name: "linux", version: "4.4.93-boot2docker", arch: "amd64", family: "unix"
与管道在原来问题的关键区别是:
- 使用的单管道作用域为
agent
图片。 - 不使用
reuseNode
。 - 不使用
label
。
我还没有亲自试过reuseNode
或label
。