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

 优凯123 发布于 2023-01-12 18:13

我正在尝试使用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尚未就绪,并且它会重新加载,而且确实如此,它工作正常.但我不确定访问该页面是启动服务器的原因,还是什么.

所以我想我需要多次卷曲直到http代码为200?还有其他方法吗?

无论哪种方式,我该怎么做?

你通常如何重启詹金斯?

2 个回答
  • 我用curl + Ansible解决了这个问题until,我刚学到了这个问题.它将请求页面,直到http状态代码为200 OK.

    - name: Wait untils Jenkins web API is available
      shell: curl --head --silent http://localhost:8080/cli/
      register: result
      until: result.stdout.find("200 OK") != -1
      retries: 12
      delay: 5
    

    2023-01-12 18:16 回答
  • 使用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
    

    2023-01-12 18:16 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有