让我从我想要实现的用例的简要描述开始。
语境
- 我正在使用 Spring Boot 开发一个服务器应用程序并使用 maven 来构建它。
- 该应用程序需要一个 Redis 数据库,因此我可以在应用程序构建完成并且 Redis 数据库启动并运行后启动该应用程序。
- 我正在用 JavaScript 编写我的 REST API 测试,一旦我的应用程序启动,我就可以运行它们。
执行
- 对于构建应用程序,没有什么特别的要求。我可以简单地做一个
mvn clean install
. 我还可以mvn package
创建一个可执行的 jar,我可以在 Docker 映像中使用它。 - 为了运行应用程序,我使用 Docker Compose 来表达我的应用程序和 Redis 之间的依赖关系。我可以
docker-compose up
用来启动我的环境。这很好,但这是一个异步步骤:我不知道让所有服务完全开始接受请求需要多长时间。 - 当我知道应用程序准备就绪时,我可以启动用 JavaScript 编写的 API 测试。
- 在这个过程结束时,我可以做一个
docker-compose down
拆除测试环境。
问题
- 我正在寻找有关处理异步步骤的建议。在这个简化的示例中,有一个步骤:我如何处理 redis 和应用程序完全启动需要一些时间(比如 5-15 秒)这一事实?
- 我可以在这种情况下使用 Jenkins Pipeline 插件的功能吗?我无法在教程或文档中找到很多信息。我已经看到了
waitUntil
步骤,但我正在寻找一些指导...... - 我是否应该实现一个简单的 shell 脚本,在循环中向我的应用程序 REST 端点之一发出 HTTP 请求,并在应用程序发送响应后立即完成?我应该在
waitUntil
步骤中调用此脚本吗? - 有没有更好的方法来满足我的要求?