根据jenkins文档referenced,为了确保在特定阶段上定义的docker代理在管道中定义的同一节点上运行,必须将标志 reuseNode 设置为true。
reuseNode 一个布尔值,默认为false。如果为true,则在同一工作空间中的管道顶层指定的节点上运行容器,而不是在新节点上运行。此选项对docker和dockerfile有效,并且仅在使用时生效个人舞台的代理人。
对于声明,可以使用
实现 agent {
docker {
image 'gradle-java:0.0.1'
reuseNode true
}
}
但是我无法找到如何在脚本管道中设置它的任何示例。 有人可以帮助如何在脚本化管道中实现这一目标吗?
答案 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'''
}
}