我写了一个小Ansible剧本,将Jenkins的docker-compose文件复制到启动Jenkins服务器。容器启动后,我想使用相同的剧本(以不同的角色)安装一些插件。
这就是为什么我一直在寻找等待该API可用的最佳方法,因为Jenkins的启动与该API的可用性之间似乎存在延迟。
我环顾四周,大多数人使用这样的东西:
- uri:
url: "http://localhost:8080"
status_code: 200
timeout: 5
register: result
until: result.status == 200
retries: 60
delay: 5
即使使用了它,似乎也有延迟。这就是为什么在服务可访问后我会暂停一下,如下所示:
- pause
minutes: 3
这可行,但我认为这不是很优雅。
此刻我的整个角色是这样的:
- uri:
url: "http://localhost:8080"
status_code: 200
timeout: 5
register: result
until: result.status == 200
retries: 60
delay: 5
- jenkins_plugin:
name: "workflow-aggregator"
timeout: 180
url: "http://localhost:8080"
- uri:
url: http://localhost:8080/safeRestart
method: POST
status_code: 302
我认为问题在于我无法使用wait_for_connection
,因为该服务已启动,并且我在文档中找不到任何端点来检查Jenkins是否已完全启动并运行。
也许有人遇到相同的问题,可以给我一些提示,告诉我如何改善支票。