我正在尝试为我的 jenkins 作业创建一个包装器,它将触发(部署服务)来自多行字符串的特定作业。我可以列出作业,但无法在 groovt 循环中构建或运行任何命令:
node {
stage("stream") {
try {
for (i in stream.split("\\r?\\n")){
build(job: "${i}", parameters: [string(name: 'ENVNAME', value: 'uat')])
}
}
catch (Exception e) {
println("ERR: Please check groups! " + e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
它抛出以下错误:
ERR: Please check groups! java.util.AbstractList$Itr
Run Code Online (Sandbox Code Playgroud)
即使我直接使用shell命令
sh("knife ssh -x user 'chef_environment:uat AND recipe:${i}'' 'sudo rm -rf /var/cache/yum; sleep 10;sudo chef-client -W -o ${i}'")
Run Code Online (Sandbox Code Playgroud)
回显服务有效,但任何其他命令都没有。面对每次/每次发布将触发的作业都不同的事实,您有什么建议或任何其他建议。
我无法通过传递作业名称变量的 jenkins 管道构建作业。请在下面的代码片段中找到。如果我用“微服务”替换 ${service} 它将触发工作
service = 'microservice'
echo "TESSSSSSSSTTT ${service}"
build(job: "'${service}'", parameters: [string(name: 'ENVNAME', value: 'uat')])
Run Code Online (Sandbox Code Playgroud)
面临的错误是:
[Pipeline] echo
TESSSSSSSSTTT microservice
[Pipeline] build
[Pipeline] End of Pipeline
ERROR: No item named 'microservice' found
Finished: FAILURE
Run Code Online (Sandbox Code Playgroud)
我使用这种方法是因为我想为所有传递带有多行字符串参数的名称的微服务点击一个构建命令,最后我想将此构建设置为一个循环。