我正在尝试验证在执行Jenkins管道后,一个tomcat中的所有web应用程序是否都在运行。
我正在验证多个url,所以我想在for循环中进行验证。它以集合中的第一个url结束。
这是我的代码
@NonCPS
def verifyServices(list) {
echo "Services: "+list.size()
def result = true
for(int i = 0; i < list.size(); i++){
if(result) {
result = testUrl(list[i])
}
}
return result
}
def verify = []
verify.add("http://example.com:8082")
verify.add("http://example.com:8082/rest/version")
verify.add("http://example.com:8082/mobile/version")
verifyServices(verify)
和testUrl函数
def call(urlString) {
echo "Testing ${urlString}"
def url = new URL(urlString)
def HttpURLConnection connection = url.openConnection()
connection.setRequestMethod("GET")
connection.setDoInput(true)
try {
connection.connect()
def code = connection.getResponseCode()
echo "Response code ${code}"
return code == 200
} finally {
connection.disconnect()
}
}
这是我的日志
Proceeding
[Pipeline] echo
Services: 3
[Pipeline] echo
Testing http://example.com:8082
[Pipeline] echo
Response code 200
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
当我在verifyServices
中删除对testUrl
函数的调用时,它会对所有函数进行迭代。
我做错什么了吗?还是因为线圈刚刚断了?
不知怎么的,@NonCPS
注释扰乱了您的方法调用。把它取下来,你就没事了。另外,我认为你一开始就不需要它,你的代码似乎没有引入任何@NonCPS
注释可以修复的可序列化问题。。。
您可以阅读更多关于CPS技术设计的内容,或者关于如何序列化变量的教程建议。