vagrant ubuntu box connect jenkins master bug

情景描述

  • 使用jenkins的分布式构建
  • 设置ubuntu分别作为jenkins master service以及slave service
  • 使用java web start的方式进行slave connect master
  • 此时在ubunut的slave node上执行javaws http://localhost:8080/computer/mac_test/slave-agent.jnlp(请求路径没问题)
  • 爆出错误:Java Web Start splash screen process exiting ….. vagrant@vagrant-ubuntu-trusty-64:/vagrant$ Splash: X11 connection failed: No such file or directory

问题解决

  • Q1:错误log是什么意思?为什么文件在请求路径上验证过是存在的会报错是No such file or directory?
  • A1:首先翻译错误log:java web start启动屏幕进程终止了,x11链接失败,找不到文件。

  • Q2:java web start是什么?我们到底又执行了什么?

  • A2:之前使用jenkins的时候只知道jws只是一种connect master的方式,似乎理解完全错误了。根据官网介绍:

    Java Web Start 是一个软件,使您可以从 Web 下载和运行 Java 应用程序。(第一次下载采用 Java Web Start 技术的 Java 应用程序时,Java Web Start 软件会自动启动。Java Web Start 软件将整个应用程序高速缓存(存储)到本地计算机上。)

    • 提供一种单击一次即可激活应用程序的便捷方法
    • 保证您始终运行最新版本的应用程序
      (每次启动应用程序时,Java Web Start 软件组件都会检查应用程序的 Web 站点以确定是否有新的版本)
    • 避免了复杂的安装或升级过程

    java web start原来是一个运行app的软件,也理解了我执行的javaws http://localhost:8080/computer/mac_test/slave-agent.jnlp的意思:使用java web start软件安装并启动jnlp中的应用程序。这个应用程序所做的就是主动connect master节点。


  • Q3:那么我们为什么要使用java web start connect?
  • A3:因为:
    1. 这种方式很方便,对于jenkins master只要在jenkins web上放上一个jnlp应用程序,对于slave 只需要使用javaws运行一下这个app就可以建立连接。
    2. 当slave的数量变大,master通过ssh主动connect的话需要记录每service的IP和密码很不方便,通过这种方式主机并不需要主动去链接slave也
      不需要知道其IP,slave主动链接。

  • Q4: 那么`Java Web Start 为什么会启动屏幕进程,那么屏幕进程为什么又会终止?
  • A4:我在本地尝试过javaws指令发现弹出了对话框让我选择是否要连接。因此可以明白,在这个jnlp的应用程序中包含弹出GUI提示框的这一部分。那么之所以终止是因为vagrant box中并不提供可视化界面GUI。

  • Q5:那么x11是什么?是不是因为没有GUI造成not connect?

  • A5:补充知识:

    X11也叫做X Window系统,X Window系统 (X11或X)是一种 位图 显示的 视窗系统 。它是在 Unix 和 类Unix 操作系统 ,以及 OpenVMS 上建立图形用户界面 的标准工具包和协议.X 仅为 GUI 环境构建提供了基本的框架,在屏幕上绘图和移动窗口,以及与鼠标和键盘交互.

    根据以上知识可以明白:x11是用来建立GUI的,由于vagrant虚拟机不支持GUI那么肯定不会存在x11这个工具包,所以出现connect fail。

反思

  • 一开始老师让我使用java web start的方式。我没有问为什么。在使用过程中我只关注how,而没有关注what和why、when。how只是一条指令,就算我用了work了下次也不一定记得。以后也只会说上次我用connect jenkins slave用的是java web start我会用。但是我不懂为什么和是什么也许下一个场景并不适合使用。而只有明白了what和why、when者才会变成我自己的知识。

ACTION

  • 以后使用到的任何新的技术方法,要求自己使用到就记录下来,包括bug任何shell 语句,回来必须立刻将bug写成每日总结新知识写成3w和1h形式。

你可能感兴趣的:(vagrant ubuntu box connect jenkins master bug)