【问题标题】:How to debug issues with running shell scripts through Jenkins?如何调试通过 Jenkins 运行 shell 脚本的问题?
【发布时间】:2018-05-05 05:42:38
【问题描述】:

我正在运行来自 Jenkins 的 python 脚本,该脚本正在运行一个 shell 脚本,该脚本失败并出现以下Permission denied 错误,我尝试了以下方法来调试问题...

1.我正在打印运行 Jenkins 作业的 userid,它是正确的用户

2.我在 Jenkins 节点上使用相同的用户 ID 手动运行 pre_auditcommand,它工作正常,没有权限被拒绝错误

此错误仅在通过 Jenkins 运行时发生,我不知道为什么会发生这种情况?关于为什么会发生这种情况或如何进一步调试的任何指针,尽管使用了具有权限的正确用户?

2018-05-04 22:09:39 script.py submit_to_techteamweb    469    INFO    : userid:username

2018-05-04 22:09:39 script.py submit_to_techteamweb    471    INFO    : ./pre_audit --version 9.130.63.0.32.6.27 --chip 4364 --file /Users/username/FWintegration/techteam-automation/integration/release_notes.txt
2018-05-04 22:09:39 script.py submit_to_techteamweb    482    INFO    : Printing error...
2018-05-04 22:09:39 script.py submit_to_techteamweb    483    INFO    : Traceback (most recent call last):
  File "./pre_audit", line 46, in <module>
    os.mkdir(submission_directory)
OSError: [Errno 13] Permission denied: '/SWE/Teams/techteam/Firmware/submissions/4364/9.130.63.0.32.6.27

【问题讨论】:

  • 答案没有帮助吗?
  • 是的,我不知道当时有什么效果,它一次又一次地发生......基本上 pre_audit 是一个 unix 可执行文件..
  • 我觉得那应该是个新问题。
  • 不,它的问题和问题完全相同...我认为根本原因是詹金斯打开的会话与我在我的机器上打开的会话不同,需要一种通过詹金斯登录的方法
  • 与上次相比有什么变化吗?

标签: python shell jenkins


【解决方案1】:

从 jenkins 运行 shell 脚本需要适当的执行权限。在执行 script.sh 之前,在您的 python 脚本中运行以下命令:

sh "chmod 755 script.sh"

【讨论】:

  • 执行shell脚本没有问题,shell脚本尝试创建。网络位置中的一个文件夹不起作用是问题..有关如何解决此问题的任何指示?
  • 我在 mac 上执行 shell 脚本时遇到了这个错误。当我从终端执行它时它工作正常,但从詹金斯执行时它不起作用。我通过授予权限解决了它。你在 mac 上运行脚本吗?
  • 太棒了!享受编码
【解决方案2】:

机器上是否启用了 SELinux?可能是 Jenkins 服务被限制(应该是)在$WORKDIR 之外写入文件。在工作目录之外创建文件在 Jenkins 中是个坏主意。

【讨论】:

  • 机器是macPro,如何查看机器上是否开启了SELinux,如果没有怎么开启?
猜你喜欢
  • 1970-01-01
  • 2020-10-28
  • 1970-01-01
  • 2020-05-31
  • 2017-10-11
  • 1970-01-01
  • 2017-06-06
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多