【问题标题】:how to properly configure jenkins swarm as a service to get proper scrshoots?如何正确配置 jenkins swarm 作为服务以获得正确的 scrshoots?
【发布时间】:2017-07-07 08:25:41
【问题描述】:

我很难找出节点设置中的问题(centos+gnome+swarm 作为服务),因为它确实连接,正确运行 gui 测试但返回“损坏”(全白或“出现问题)截图。

在我们的 CI 环境中,我们使用 Eclipse 工具 RCPTT 构建和测试 GUI 应用程序(RED - 机器人编辑器),该工具可以单击 GUI 元素来验证功能。

测试在 Centos7 节点上使用 metacity+gnome+vncserver 执行,当 GUI 出现问题时(未找到 GUI 元素,验证与测试标准不一致),报告与屏幕截图一起创建,因此测试人员能够看看测试的应用发生了什么变化。

当手动配置节点(从 Jenkins 节点配置页面)或用户在节点上执行 swarm 脚本(通过 ssh)时,截图很好。

当 swarm as a service 执行时(节点已连接,systemctl 状态为绿色,由同一用户手动运行),除了截图关闭(屏幕分辨率正常,全屏为白色或出现错误“哦,不!出了点问题”

我在作业控制台中的 RCPTT、xvnc 的日志中没有看到任何错误。 屏幕截图损坏的根本原因是什么?

环境设置: 服务定义

[Unit]
Description=Swarm client to create Jenkins slave
After=network.target
After=display-manager.service

[Service]
ExecStart=<path>/swarm_client.sh start
ExecStop=<path>/swarm_client.sh stop
Type=forking
PIDFile=<path>/slave.pid
User=root
Group=root

[Install]
WantedBy=graphical.target

swarm_client.sh

function startclient {
                PUBIP=`public ip string`

        java  \
           -jar ${SWARM_HOME}/swarm-client-3.3.jar \
           -executors 1 \
           -deleteExistingClients \
           -disableClientsUniqueId \
           -fsroot ${CLIENT_HOME} \
           -labels "linux"  \
           -master <jenkins> \
           -name node-Swarm-${PUBIP} 2>&1 > ${CLIENT_HOME}/slave.log &
    PID=$!
        RETCODE=$?
        echo $PID > ${CLIENT_HOME}/slave.pid
        exit $RETCODE
}

function stopclient {
        if [ -f ${CLIENT_HOME}/slave.pid ];then
                PID=`head -n1 ${CLIENT_HOME}/slave.pid`
                kill $PID
                rm -f ${CLIENT_HOME}/slave.pid
        fi
}
SWARM_HOME=<path>/jenkins/swarm
CLIENT_HOME=<path>/jenkins
case "$1" in
  start)
        startclient
        ;;
  stop)
        stopclient
        ;;
  *)
        echo "Usage: systemctl {start|stop} swarm_client.service" || true
        exit 1
esac

xvnc 日志:

Fri Jul  7 11:05:40 2017
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5942
 vncext:      created VNC server for screen 0
gnome-session-is-accelerated: llvmpipe detected.

【问题讨论】:

    标签: linux jenkins centos7


    【解决方案1】:

    好的,在橡皮鸭会话和一些谷歌搜索之后,似乎在设置将依赖于用户环境属性/设置的服务时(群客户端确实是一个反向远程外壳),这样的服务应该至少导入 env 属性用户外壳。

    在我的例子中,如果 swarm_client.sh 在 ssh 上运行良好但不是作为服务,它需要使用用户的 ssh/bash env 属性

    #export environment of user to file
    env > user.env
    

    将此类文件添加到 [Service] 部分下的服务描述中:

    EnvironmentFile=<path>/user.env
    

    我还没有调查到底缺少什么,但这对我的情况来说已经足够了。

    希望它可以帮助在 Centos/RH 下使用 swarm 作为服务遇到同样问题的人

    【讨论】:

      猜你喜欢
      • 2017-12-09
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多