詹金斯声明管道不会与码头工人群

问题描述:

运行这个简单的流水线工作:詹金斯声明管道不会与码头工人群

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测试连接时,它可以连接没有问题:
enter image description here

有人有个想法很热解决这个问题吗?

更新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码头引擎可能会起作用。

配置,像这样: Jenkins Cloud Docker Configuration

凭据提供连接到群所需要的证书。我记得我花了几次尝试才得到这个权利。


下面的管道工程:

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

我还没有亲自试过reuseNodelabel