如何在Jenkinsfile中执行Shell脚本?

时间:2014-01-22 07:06:23

标签: shell jenkins jenkins-pipeline

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

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

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 个答案:

答案 0 :(得分:35)

根据此问题的观看次数,看起来有很多人正在访问此内容,以了解如何设置执行shell脚本的作业。

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

  • 在Jenkins的主页面中选择 New Item
  • 输入项目名称,例如"我的shell脚本作业"并选择 Freestyle项目。按确定
  • 在配置页面的 Build 块中,单击添加构建步骤下拉列表,然后选择执行shell
  • 在textarea中,您可以粘贴脚本或指示如何运行现有脚本。所以你可以说:

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

    或只是

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

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

您可以在GitHub中的文档Create a Jenkins shell script job中获取更多详细信息。

答案 1 :(得分:18)

如果您看到错误消息,则说明

  

在工作区中构建/ 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

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

答案 2 :(得分:6)

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

答案 3 :(得分:2)

以前的答案是正确的,但这是执行此操作的另一种方法以及一些提示:

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

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

enter image description here enter image description here

需要注意的事项/提示:

  • 环境变量,如果您的作业正在同时运行,则您需要担心并发问题。一项工作可能是设置环境变量的值,而下一项可能是使用该值或不正确地基于该值采取了某些措施。
  • 确保所有路径都完全合格
  • 考虑在/ var / log或其他地方记录日志,因此您还可以在服务器上进行一些操作(可选)
  • 关于空间问题和权限的问题,空间不足和权限问题在linux环境中非常普遍
  • 允许并确保脚本失败时,您的脚本/作业不会使jenkin作业失败