我正在构建将广泛使用Jenkins管道的作业。我们的节点是按项目的标签指定的,但与常规作业不同,管道构建似乎没有“限制此项目可以运行的位置”复选框。我如何指定管道将在哪个节点上运行,就像我对常规作业所做的那样?
xuo3flqw1#
在 执行 node 步骤 时 指定 所 需 的 节点 或 标记 :
node
node('specialSlave') { // Will run on the slave with name or tag specialSlave }
中 的 每 一 个See https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#node-allocate-node for an extended explanation of the arguments to node .
vcirk6k62#
在json格式的声明性管道中选择标签为X的节点:
X
pipeline { agent { label 'X' } ... ... }
您也可以使用或(||)或和(&&)运算子套用多个标示。在标签为X或标签为Y的任何节点上运行作业:
||
&&
Y
agent { label 'X || Y' }
仅在具有both标签的节点上运行作业:
agent { label 'X && Y' }
更多信息请参阅Jenkins Pipeline参考指南。ps:如果您正在阅读这篇文章,您可能刚刚开始使用Jenkins管道,并且不确定应该使用声明式管道还是脚本式管道。简短回答:最好从声明式开始jenkins.io:宣告式管缐和指令码管缐的建构方式完全不同。宣告式管缐是Jenkins Pipeline的最新功能,它:
vof42yt13#
需要说明的是,由于Pipeline有两种语法,因此有两种方法可以实现这一点。
pipeline { agent none stages { stage('Build') { agent { label 'slave-node' } steps { echo 'Building..' sh ''' ''' } } } post { success { echo 'This will run only if successful' } } }
node('your-node') { try { stage 'Build' node('build-run-on-this-node') { sh "" } } catch(Exception e) { throw e } }
r6vfmomb4#
不应执行Jenkins作业的代理或节点:
代理{ label '!生成代理名称' }
yshpjwxd5#
如果需要在单个节点上运行整个jenkins管道,请使用以下格式
pipeline { agent { label 'test1' } stages { stage('Build') { steps { echo 'Building..' } } stage('Test') { steps { echo 'Testing..' } } stage('Deploy') { steps { echo 'Deploying....' } } }
}如果您需要在不同的节点中执行每个阶段,请使用以下格式,
pipeline { agent any stages { stage('Build') { steps { echo 'Building..' } } stage('Test') { steps { node("test1"){ echo 'Testing..' } } } stage('Deploy') { steps { echo 'Deploying....' } } }
}
5条答案
按热度按时间xuo3flqw1#
在 执行
node
步骤 时 指定 所 需 的 节点 或 标记 :中 的 每 一 个
See https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#node-allocate-node for an extended explanation of the arguments to
node
.vcirk6k62#
在json格式的声明性管道中选择标签为
X
的节点:您也可以使用或(
||
)或和(&&
)运算子套用多个标示。在标签为
X
或标签为Y
的任何节点上运行作业:仅在具有both标签的节点上运行作业:
更多信息请参阅Jenkins Pipeline参考指南。
ps:如果您正在阅读这篇文章,您可能刚刚开始使用Jenkins管道,并且不确定应该使用声明式管道还是脚本式管道。简短回答:最好从声明式开始jenkins.io:
宣告式管缐和指令码管缐的建构方式完全不同。宣告式管缐是Jenkins Pipeline的最新功能,它:
vof42yt13#
需要说明的是,由于Pipeline有两种语法,因此有两种方法可以实现这一点。
宣告式
脚本化
r6vfmomb4#
不应执行Jenkins作业的代理或节点:
代理{ label '!生成代理名称' }
yshpjwxd5#
如果需要在单个节点上运行整个jenkins管道,请使用以下格式
}
如果您需要在不同的节点中执行每个阶段,请使用以下格式,
}