Web applications 如何等待web应用程序升级?
我使用Gradle触发将web应用部署到开发环境。 部署是异步完成的-部署任务会立即返回,但需要一段时间才能启动新的应用程序 我想在Gradle脚本中等待新版本的应用程序正常运行 我使用SpringWeb applications 如何等待web应用程序升级?,web-applications,gradle,spring-boot,Web Applications,Gradle,Spring Boot,我使用Gradle触发将web应用部署到开发环境。 部署是异步完成的-部署任务会立即返回,但需要一段时间才能启动新的应用程序 我想在Gradle脚本中等待新版本的应用程序正常运行 我使用Springboot1.3.5,并且我有标准的监控端点 /info和/health /info返回 { "app" : { "name" : "app name", "branch" : "origin/develop", "id" : "153", "tag" : "bui
boot1.3.5
,并且我有标准的监控端点
/info
和/health
/info
返回
{
"app" : {
"name" : "app name",
"branch" : "origin/develop",
"id" : "153",
"tag" : "build info",
"version" : "1.0-SNAPSHOT"
}
}
我感兴趣的是等待,
/info'返回新版本的特定的
id`-id,而不是可能仍在运行的旧版本。由于Gradle允许您在脚本中使用Groovy,所以在执行任务的主作业后,您可以自由地让构建等待某些条件。您所需要的只是提供一个doLast
闭包,在这个闭包中,您必须在一定的睡眠时间内检查循环中的健康状态响应
这看起来像:
//assume, this is your deploy task
task deploy {
doLast {
def id = %make a http-request and parse response for id%
while(id!=%specificid%) {
//sleep for 5 seconds
sleep(5*1000)
//one more http-request and parsing
id = %make a http-request and parse response for id%
}
}
}
doLast
是在任务作业完成后执行的,它不会让下一个任务在运行之前执行
您可以添加任何需要的条件,例如防止无限循环或其他情况。当然,这不是一个现成的解决方案,但您可以使用它来构建自己的解决方案。您所需要的只是进行http请求和解析响应(lib可能会帮助您)
我曾经使用几乎相同的逻辑来检查远程服务是否已启动并正在运行,但使用的是ssh会话,而不是http请求,并且工作正常