35

我保留了一个名为urltest.sh in的 shell 脚本文件,/var/lib/jenkins并从 build.xml 执行该文件jenkins

当我执行构建时,它失败了。

The Environment Variables are - 
HOME -          /var/lib/jenkins ;
JENKINS_HOME -  /var/lib/jenkins

控制台输出如下:

Started by user anonymous
Building in workspace /var/lib/jenkins/workspace/AutoScript
[AutoScript] $ /bin/sh -xe /tmp/hudson2777728063740604479.sh
+ sh urltest.sh
sh: 0: Can't open urltest.sh
Build step 'Execute shell' marked build as failure
Finished: FAILURE

我很困惑我应该在哪里保存 shell 脚本文件以便执行它。

4

4 回答 4

56

根据这个问题的浏览量,看起来很多人都在访问它,看看如何设置一个执行 shell 脚本的作业。

这些是在 Jenkins 中执行 shell 脚本的步骤:

  • 在 Jenkins 的主页中选择New Item
  • 输入一个项目名称,例如“我的 shell 脚本作业”,然后选择Freestyle project。按确定
  • 在配置页面上,在Build块中单击Add build step下拉菜单并选择Execute shell
  • 在文本区域中,您可以粘贴脚本或指示如何运行现有脚本。所以你可以说:

    #!/bin/bash
    
    echo "hello, today is $(date)" > /tmp/jenkins_test
    

    要不就

    /path/to/your/script.sh
    
  • 单击保存

现在,新创建的作业应该与其他作业一起出现在 Jenkins 的主页中。打开它并选择立即构建以查看它是否有效。一旦完成从构建历史中选择特定构建并读取控制台输出以查看是否一切都按预期发生。

您可以在文档中获取更多详细信息在 GitHub 中创建 Jenkins shell 脚本作业。

于 2016-11-30T12:41:20.957 回答
23

如果您看到错误消息,它会说

在工作区/var/lib/jenkins/workspace/AutoScript 中构建

并且根据您的评论,您已将 urltest.sh 放入

/var/lib/jenkins

因此詹金斯无法找到该文件。在您的构建步骤中执行此操作,它将起作用

cd             # which will point to /var/lib/jenkins
./urltest.sh   # it will run your script

如果仍然失败,请尝试 chown 文件,因为 jenkin 用户可能没有文件权限,但我认为如果您执行上述步骤,您将能够运行。

于 2014-01-27T07:02:51.320 回答
7

托管脚本插件提供了一种管理用户脚本的简单方法。它还添加了一个构建步骤操作,允许您选择要执行的用户脚本。

于 2014-06-12T18:04:50.150 回答
7

以前的答案是正确的,但这里有另一种方法和一些提示:

选项 #1 转到您的 Jenkins 工作并搜索“添加构建步骤”,然后将您的脚本复制并粘贴到那里

选项 #2 转到 Jenkins 并再次执行相同的“添加构建步骤”,但这次将脚本的完全限定路径放在示例中:./usr/somewhere/helloWorld.sh

在此处输入图像描述 在此处输入图像描述

注意事项/提示:

  • 环境变量,如果您的工作同时运行,那么您需要担心并发问题。一项工作可能正在设置环境变量的值,而下一项工作可能会使用该值或基于该值不正确地采取一些行动。
  • 确保所有路径都是完全合格的
  • 考虑记录 /var/log 或其他地方,这样你也可以在服务器上访问一些东西(可选)
  • 关于空间问题和权限,空间不足和权限问题在linux环境中很常见
  • 当您的脚本失败时,提醒并确保您的脚本/作业使 jenkin 作业失败
于 2018-07-17T17:27:09.833 回答