持续集成 jenkins 构建脚本中执行 pytest 失败

野原 · 2022年05月06日 · 最后由 funtym 回复于 2022年05月09日 · 9913 次阅读
  1. jenkins 中执行的脚本内容
  2. 构建失败后的控制台输出
  3. 在 jenkins 部署的服务器上执行 pytest 成功

问题

为什么在服务器上执行 pytest 成功,使用 jenkins 构建时执行却提示 not found,是缺少某些配置吗?

尝试一些方法后均未解决,求各位大佬帮忙看看

共收到 23 条回复 时间 点赞

jenkins 日志里看到你命令行的用户名是 fsytest,控制台输出看到你用户是 root,可能是用户 PATH 的关系。也就是 pytest 安装在 root 用户的 PATH 下,但是没安装在 fsytest 用户的 PATH。
可以在 root 上用 which pytest 看看安装路径,然后把这个路径 export 到 fsytest 的 PATH 里。

这个问题我遇到过,我发现好像 cd 并不能切换到工作目录,执行 py 文件的时候要用全路径

python -m pytest
可以试一下这样执行

用 pytest 的全路径

22楼 已删除
21楼 已删除
王稀饭 回复

你好,我尝试了下发现我的服务器下没有 fsytest 这个用户,fsytest 应该是我 Jenkins 下 job 名称

野原 #19 · 2022年05月06日 Author
木小白 回复

你好,我试了下还是不行

野原 #18 · 2022年05月06日 Author
tester 回复

你好,加上了 python -m pytest 也不行,提示成了 python:not found

野原 #17 · 2022年05月06日 Author

我是使用 docker 部署的 jenkins,运行容器的时候也是挂载了本地的目录

您好,以我的理解,从 “pytest not found" 报错来看,要么是执行脚本的环境里面没有安装 pytest,要么就是 pytest 没有在环境变量里面。 您可以稍微改一下自己在 Jenkins 的命令,做一些打印来继续定位。
“cd ui_test
whoami
which pytest
pytest -vs xxxxxxxxx",
这样做的好处是,我们可以知道使用的是哪个账户(whoami)来执行脚本,以及在此账户下是否安装了 pytest (which pytest)。

我以前是在 pipenv 中执行 pytest 的,这样能够保障 python 环境的干净,还有就是建议你额外尝试下 jenkins_pipeline

野原 #13 · 2022年05月06日 Author
Duke 回复

你好,刚刚试了下好像是 pytest 没有在环境变量里面,现在运行时提示变为没有权限了

配置 jenkins 的时候选择使用远程连接服务器执行脚本。类似这样

野原 回复

从 whoami 的打印来看, 执行脚本的账户是一个普通用户叫 jenkins。 从环境变量的输出来看, pytest 安装在 /usr/local/bin。所以接下来要解决的问题就是如何让普通用户可以执行 pytest, 例如,visudo 加入普通用户 or 把/usr/local/bin 的权限中 others 添加 rw 权限 or 使用普通用户 yum 安装 pytest 等等。 因为每个方法有利有弊,要根据你所使用的环境以及你想做这件事的目的来选择,所以具体方法您自己衡量选择吧。
BTW 我个人理解, 14L 那位说的也有道理,如果满足您的需求,也可以如此实现。

#!/bin/bash
把上面的加到 shell 脚本开头试试呢

野原 #10 · 2022年05月07日 Author
xuxu 回复

你好,感谢回复,我试了下还是不行

野原 #18 · 2022年05月07日 Author
Duke 回复

谢谢解答,目前问题已解决

cooling 回复

好的,谢谢解答

周周 回复

你好感谢回复,目前问题已解决

  1. 我这边新增了一个本机节点
  2. 在我新增节点上构建时可以构建成功

问题也算解决,感谢各位回复

你好,这个我也试了下,也是不行的


我在执行 node 命令时也出现了没有权限的日志,在运行 node 命令前先执行环境变量后解决问题。楼主可以参考试下

野原 #24 · 2022年05月08日 Author
dawei 回复

好的谢谢解答

Duke 回复

正解,我也遇到过,Jenkins 执行脚本的时候,是 Jenkins 用户,不是 ssh 到服务器的那个账户

野原 关闭了讨论 05月09日 18:00
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册