运行这个简单的管道:
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
中测试连接时,它可以连接而没有问题:
任何人都有热心解决这个问题?
答案 0 :(得分:0)
更新11/27/2017 :屏幕截图显示了不使用swarm的错误配置,而是使用单个管理器节点。为了使用swarm,我切换到端口3376
,测试连接输出更改为Version = swarm/1.2.8, API Version = 1.22
。在看不到构建在群集中的其他节点上运行,并且群体管理器不堪重负之后,我注意到了我的错误。
在原始问题中,不清楚使用各种Jenkins插件的版本,以及如何配置swarm。
我已成功使用:
在我写这篇文章的时候,Docker Plugin不支持更新的Docker 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
。