Web applications 如何等待web应用程序升级?

Web 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

我使用Gradle触发将web应用部署到开发环境。 部署是异步完成的-部署任务会立即返回,但需要一段时间才能启动新的应用程序

我想在Gradle脚本中等待新版本的应用程序正常运行

我使用Spring
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请求,并且工作正常