linux - 如何正确配置 jenkins swarm 作为服务以获得正确的 scrshoots?

标签 linux jenkins centos7

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

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

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

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

当 swarm 作为服务执行时(节点已连接,systemctl 状态为绿色,由与手动运行相同的用户执行),除了屏幕截图关闭外,一切正常(屏幕分辨率良好,整个屏幕为白色或错误“哦不!出了点问题”enter image description here

我在作业控制台的 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.

最佳答案

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

在我的例子中,如果 swarm_client.sh 在 ssh 中工作正常但不是作为服务,它需要使用用户的 ssh/bash env 属性

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

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

EnvironmentFile=<path>/user.env

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

希望能对在Centos/RH下与swarm as a service有同样问题的人有所帮助

关于linux - 如何正确配置 jenkins swarm 作为服务以获得正确的 scrshoots?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44966022/

相关文章:

docker - Jenkins 声明式管道与来自 SCM 的 Docker/Dockerfile 代理

linux - Zipkin + Elasticsearch (ELK) 不创建索引

mysql - 在centos7上为mysql传入连接打开另一个端口

python - 通过REST API更改Jenkins节点标签

linux - git 可以用来处理 repo 中的项目吗?

c - 程序在 Linux 和 Windows 上挂起,似乎在 Mac 上运行

python - 在 Linux 上安装 Python 程序

jenkins - 将 git 更改传递到文件以供以后的 Jenkins 作业使用

centos - CentOS7主机创建ubuntu guest失败(VMWare SVGA不可用)

linux - F5 负载均衡器交互