【问题标题】:How to execute a shell script in Jenkins如何在 Jenkins 中执行 shell 脚本
【发布时间】:2016-02-15 08:34:02
【问题描述】:

当构建准备就绪时,我有几个 shell 命令需要执行。在 Jenkins 中,我创建了一个带有执行 shell 选项的 Freestyle 项目:

#!/bin/sh
cd /path to kafka folder
bin/zookeeper-server-start.sh config/zookeeper.properties &
bin/kafka-server-start.sh config/server.properties &
cd /path to elasticsearch
bin/elasticsearch

我可以从本地文件执行这个 shell 命令,但不能通过 Jenkins。

这是我在 Jenkins 中看到的控制台输出:

/Users/Shared/Jenkins/tmp/hudson2342342342342357656.sh: line 2: cd: /path to kafka folder: Not a directory
Build step 'Execute shell' marked build as failure
Finished: FAILURE

对我如何解决这个问题有任何帮助吗?谢谢。

【问题讨论】:

  • 如果你从 Jenkins 那里做,会发生什么?顺便说一句,我是否理解正确,您想从 Jenkins 中启动一个服务器脚本,即使在 Jenkins 作业结束后它也应该继续运行?
  • 没错。即使在作业完成运行后,我也希望所有服务器都能启动并运行。

标签: shell jenkins


【解决方案1】:

这是一个权限问题。请检查您的 Jenkins 用户是否有足够的权限来运行此 shell 命令

【讨论】:

  • 如何检查?
【解决方案2】:

找出问题的最佳方法(例如权限问题;文件夹不存在;等等),这样做:

  • 登录到正在执行此作业的从节点(如果没有定义,则可能是 Jenkins 服务器本身(“主”)
  • 如果在“master”上:成为 Jenkins 运行的用户(很可能是“jenkins”):sudo su - jenkins(如果您有 sudo/root 访问权限)或su - jenkins(如果您知道 jenkins 的密码)

  • 如果作业在另一个从站上运行,请找出 Jenkins 服务器连接的用户。成为从节点上的那个用户。

  • cd /path/to/workspace(您可以通过查看作业运行的控制台找到作业的工作区)
  • 现在从 shell 运行您的命令,就像它们在构建步骤中一样 - 可能会更清楚地说明它们失败的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多