Jenkins管道-在多个远程主机上并行运行作业
我有一个Jenkins作业,字符串参数Name=“HOST”。我正试图通过连接到主机远程运行一个脚本。它很好用。类似地,如果在host参数中输入多个主机名,则作业必须在这些多台计算机上并行运行。如何做到这一点Jenkins管道-在多个远程主机上并行运行作业,jenkins,jenkins-pipeline,jenkins-groovy,jenkins-cli,Jenkins,Jenkins Pipeline,Jenkins Groovy,Jenkins Cli,我有一个Jenkins作业,字符串参数Name=“HOST”。我正试图通过连接到主机远程运行一个脚本。它很好用。类似地,如果在host参数中输入多个主机名,则作业必须在这些多台计算机上并行运行。如何做到这一点 如果有人对此有任何代码,请分享。谢谢你的帮助 在不同机器上并行运行作业的简单方法是使用 管道示例: pipeline { agent none stages { stage('Matrix stage') {
如果有人对此有任何代码,请分享。谢谢你的帮助 在不同机器上并行运行作业的简单方法是使用 管道示例:
pipeline {
agent none
stages {
stage('Matrix stage') {
matrix {
agent {
label "${NODE}"
}
axes {
axis {
name 'NODE'
values 'node1', 'node2', 'node3'
}
}
stages {
stage('Parallel stage') {
steps {
echo "Run on ${NODE}"
}
}
}
}
}
}
}
此管道将并行执行['node1'、'node2'、'node3']上定义的阶段
请注意,声明性矩阵是本机声明性管道功能,因此无需额外安装插件。由于无法参数化矩阵轴值,这可能是一种方法(带有脚本块的声明性管道语法):
这样做的缺点是,您无法使多个任务相互依赖的真正管道。我也在寻找这个问题的答案。谢谢你的指点。由于我是这个管道groovy代码的新手,我发现很难实现这个逻辑。你能告诉我实现这一目标的替代方法吗。谢谢你的帮助!不客气。如果你提供一个你已经尝试过但没有成功的例子,我会尝试找出错误所在。
def deploys = [:]
def servers = ['host1','host2','host3']
pipeline {
agent any
stages {
stage ('Deploying multiple hosts') {
steps {
script {
servers.each { server ->
deploys[server] = {
sh "echo run stuff.."
}
}
parallel deploys
}
}
}
}
}