如何解决如何组织我的 Jenkins 作业以在具有特定标签的节点上运行,而每个节点不使用多个执行程序?
大家早上好,
我正在尝试将我的 Jenkins 作业设置为在具有特定标签的节点上运行,但每个节点最多使用一个执行程序。这是因为所有具有相同标签的作业需要在节点上使用相同的工作空间,因此我们需要它们不重叠。尽管如果另一个作业以不同的标签启动,我们希望它仍然可以访问节点上的另一个可执行文件。
我首先尝试使用 Throttle Concurrent Build
插件,但如果我们在选项中设置并发作业属性,则 maxConcurrentPerNode
参数不起作用。这仍将执行管道,但忽略节点限制。
例如:
agent {
node {
label LABEL
customWorkspace LABEL
}
}
// Throttle a declarative pipeline via options
options {
throttleJobProperty(
categories: [LABEL],limitOneJobWithMatchingParams: false,maxConcurrentPerNode: 1,maxConcurrentTotal: 0,paramsToUseForLimit: '',throttleEnabled: true,throttleOption: 'project',)
}
stages {
stage('sleep') {
steps {
sh "sleep 500"
echo "Done"
}
}
}
}
如果我尝试使用 lock
会发生类似的情况,因为它似乎没有在管道的该步骤中找到 NODE_NAME
环境变量。这会弹出错误并且不执行管道。
pipeline {
agent {
node {
label 'LABEL'
customWorkspace LABEL
}
}
options {
lock("${LABEL}-${NODE_NAME}")
}
stages {
stage('sleep') {
steps {
sh "sleep 500"
echo "Done"
}
}
}
}
您对如何实现这一点有任何想法吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。