脚本Jenkinsfile Docker代理,如何指定reuseNode标志,是否需要?

时间:2018-06-13 05:17:03

标签: jenkins jenkins-plugins jenkins-pipeline

根据jenkins文档referenced,为了确保在特定阶段上定义的docker代理在管道中定义的同一节点上运行,必须将标志 reuseNode 设置为true。

  

reuseNode   一个布尔值,默认为false。如果为true,则在同一工作空间中的管道顶层指定的节点上运行容器,而不是在新节点上运行。此选项对docker和dockerfile有效,并且仅在使用时生效个人舞台的代理人。

对于声明,可以使用

实现
   agent {
                 docker {
                     image 'gradle-java:0.0.1'
                     reuseNode true
                 }
             }

但是我无法找到如何在脚本管道中设置它的任何示例。 有人可以帮助如何在脚本化管道中实现这一目标吗?

2 个答案:

答案 0 :(得分:0)

在新版本的声明式管道中进行了增强并建议使用label

agent {
    docker {
        image 'maven:3-alpine'
        label 'my-defined-label'
        args  '-v /tmp:/tmp'
    }
}

如果您想对脚本化管道执行相同操作,请在 node(agentName) 中提及代理标签名称,就像

node("my-defined-label") {
  docker.image('maven:3-alpine').inside('-v $HOME/.m2:/root/.m2') {
        stage('Build') {
            sh 'mvn -B'
        }
   }
}

答案 1 :(得分:0)

我发现通过使用 docker.image(dockerImage).inside(dockerArgs) 在脚本化管道中执行此操作的方法根本不包含它。据我所知,与声明式管道相反,它默认在同一节点上运行。

相反,如果您想在不同的节点上运行,您可以插入使用 node

node {
    docker.image(dockerImage).inside(dockerArgs) {
        sh '''echo container'''
    }
}