jenkins - 如何使用 Ansible 重新启动 Jenkins 并等待它回来?

标签 jenkins jenkins-plugins ansible

我正在尝试使用 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?

最佳答案

使用 URI 模块 http://docs.ansible.com/ansible/uri_module.html

   - name: "wait for ABC to come up"
     uri:
       url: "http://127.0.0.1:8080/ABC"
       status_code: 200
     register: result
     until: result.status == 200
     retries: 60
     delay: 1

关于jenkins - 如何使用 Ansible 重新启动 Jenkins 并等待它回来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23919744/

相关文章:

Ansible 获取 list 主机组的主机名和 IP

ios - Jenkins iOS 为模拟器和设备构建

java - Jenkins启动错误: jenkins. model.InvalidBuildsDir : does not contain ${ITEM_FULL_NAME} or ${ITEM_ROOTDIR},无法区分项目

Jenkins 不是作为 Windows 服务开始的

jenkins - 指向 Git 存储库作为 Jenkins Job DSL 作业的来源?

jenkins - Jenkins中CPS的含义是什么。 CPS的全名是什么?

ubuntu - "apt"模块在 Ansible 中停止

bash - Jenkins 文本参数 - 特殊字符乱码(不需要的变量替换)

jenkins - jenkins 中的 VStest 代码覆盖率报告

docker - 如何定制molecules的docker镜像?