【问题标题】:Running python script via execute command from shell in Jenkins在 Jenkins 中通过 shell 执行命令运行 python 脚本
【发布时间】:2018-07-03 07:59:45
【问题描述】:

已设置 Jenkins 作业,以便检查最新版本的 git repo 它执行一些python代码。 git repo 被签出到我们的 linux 实验室 pc 并在那里运行。

在脚本中,我们正在检查一些 labpc 网络接口的状态。我制作了一个小脚本,它执行以下几行,但它会抛出类似“没有文件或目录”的错误。该命令没问题,但它失败了,因为 linux env 不可见。奇怪的是,我们有 10 个测试用例,其中 6 个运行良好,有 4 个失败,而且总是失败。所有测试用例中的事件顺序完全相同...

res = subprocess.check_output(['ip', 'link', 'show', 'dev', '<interface name>'])
logger.info(res)

脚本在本地执行时有效,因此这背后存在 jenkins 问题。有人有解决这个问题的建议吗?

【问题讨论】:

  • 这是你的 python 脚本,你如何在你的 Jenkins Job 中调用 python 脚本? Jenkins 内部还有一个 Job 日志,你可以看到那里发生了什么。
  • 我只是用 python /
  • 我的意思是你是通过 executable shell command 还是 groovy 脚本的一部分调用它 sh python &lt;absolute path&gt;/&lt;script name&gt; (sh for linux shell)
  • 是的,它是执行 shell 命令的一部分。我现在解决了这个问题。无论如何感谢您的帮助

标签: python jenkins


【解决方案1】:

通过在命令前加上 'sudo' 来解决问题。甚至 尽管该命令不需要 sudo 权限,但它需要它 与詹金斯一起运行时。

您可以在 jenkins 中打开可以对服务器执行 groovy 命令的节点并测试它是否有效。

【讨论】: