我已经创建了管道,并且希望在多个服务器上运行Shell脚本,我正在从txt文件读取服务器列表,我编写了代码以遍历该列表,并为该列表中的每个服务器运行Shell脚本。 / p>
问题是循环不会超越第一次执行。如果我只打印服务器名称而不执行ssh命令,它将打印所有服务器名称,这意味着循环工作正常,但不能正常使用ssh命令。我也尝试过循环,但是同样的问题。
stage('execute script') {
steps {
script {
....some code here
def absoluteFilePath = "${WORKSPACE}/serversList.txt"
def fileContent = readFile(absoluteFilePath)
listOfServers = fileContent.split('\n')
}
iterateOverList(listOfServers, "${WORKSPACE}/")
}
}
@NonCPS
def iterateOverList(list, workSpacePath) {
//iterate over servers list and execute shell script on it.
list.each { hostServer ->
sh "ssh -t -o StrictHostKeyChecking=no -o 'UserKnownHostsFile /dev/null' -i /var/lib/user/.ssh/id_rsa user@${hostServer} 'sudo bash -s' < ${workSpacePath}myShellScript.sh"
}
}
答案 0 :(得分:0)
实际上,Jenkins管道中有几个未解决的错误,带有时髦的闭包,例如https://www.emberjs.com/api/ember-data/3.3/classes/DS.Store/methods/pushPayload?anchor=pushPayload和JENKINS-46749。
因此,请使用简单的Java循环遍历您的列表:
undefined