【发布时间】:2014-05-28 18:58:49
【问题描述】:
我正在尝试使用 Ansible 重新启动 Jenkins 服务:
- name: Restart Jenkins to make the plugin data available
service: name=jenkins state=restarted
- name: Wait for Jenkins to restart
wait_for:
host=localhost
port=8080
delay=20
timeout=300
- name: Install Jenkins plugins
command:
java -jar {{ jenkins_cli_jar }} -s {{ jenkins_dashboard_url }} install-plugin {{ item }}
creates=/var/lib/jenkins/plugins/{{ item }}.jpi
with_items: jenkins_plugins
但在第一次运行时,第三个任务引发了很多 Java 错误,包括:Suppressed: java.io.IOException: Server returned HTTP response code: 503 for URL,这让我觉得 Web 服务器(完全由 Jenkins 处理)还没有准备好。有时,当我使用浏览器访问 Jenkins 仪表板时,它会说 Jenkins 尚未准备好,并且会在准备好时重新加载,并且确实可以正常工作。但是我不确定访问页面是什么启动了服务器,还是什么。
所以我想我需要多次 curl 直到 http 代码为 200?有没有其他办法?
不管怎样,我该怎么做?
你通常如何重启 Jenkins?
【问题讨论】:
-
致投票结束此主题的人:我正在尝试使用这些工具为我的开发团队设置一个持续部署服务器,并且标签已经存在。你怎么能说这与编程无关?如果我改用 Bash,你认为会好吗?
-
你可以盲目重启 Jenkins,然后使用 wait_for 直到它备份。我有一个更好的 wait_for_http,但还没有为它做 pull req。
-
@tedder42 我发布的代码中已经有一个“wait_for”。并且在第一个任务之后服务已经启动。出不来的是 web 部件,我不知道如何等待它。我想我需要你提到的那种 wait_for_http 。
-
抱歉,您是对的,您需要 wait_for_http 因为 port 已启动,即使 service 未启动。给我发电子邮件,我可以给你一些东西放在你的图书馆进行 beta 测试。 (是的,我可能会把它作为一个答案,只需要完善它)
标签: jenkins jenkins-plugins ansible ansible-playbook