如何在Jenkinsfile中执行Shell脚本?

Kwo*_*rks 25 shell jenkins jenkins-pipeline

我保持一个名为shell脚本文件urltest.sh/var/lib/jenkins,并执行该文件jenkins版本.

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

The Environment Variables are - 
HOME -          /var/lib/jenkins ;
JENKINS_HOME -  /var/lib/jenkins
Run Code Online (Sandbox Code Playgroud)

控制台输出如下:

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
Run Code Online (Sandbox Code Playgroud)

我很困惑,我应该保留shell脚本文件,以便执行它.

fed*_*qui 42

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

以下是在Jenkins中执行shell脚本的步骤:

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

    #!/bin/bash
    
    echo "hello, today is $(date)" > /tmp/jenkins_test
    
    Run Code Online (Sandbox Code Playgroud)

    要不就

    /path/to/your/script.sh
    
    Run Code Online (Sandbox Code Playgroud)
  • 单击保存.

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

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


Avi*_*wal 19

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

在工作空间/ 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
Run Code Online (Sandbox Code Playgroud)

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


Mih*_*aru 6

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


gre*_*pit 5

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

选项#1 转到Jenkins职位并搜索“添加构建步骤”,然后将脚本复制并粘贴到此处

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

在此处输入图片说明 在此处输入图片说明

注意事项/提示:

  • 环境变量,如果您的作业在同一时间运行,则需要担心并发问题。一个作业可能正在设置环境变量的值,而下一个作业可能正在使用该值或基于该值不正确地采取了某些措施。
  • 确保所有路径都完全合格
  • 考虑将日志记录在/ var / log或其他地方,以便在服务器上也可以进行一些操作(可选)
  • 关于空间问题和权限的问题,空间不足和权限问题在linux环境中非常常见
  • 发出警报并确保您的脚本/作业在脚本失败时无法通过詹金作业