shu*_*tsy 5 linux bash shell jenkins
我的shell脚本如下所示:
#!/bin/bash
USER=$1
sudo rm -rf /home/$USER/system/logs/*
exit 0
Run Code Online (Sandbox Code Playgroud)
它被检入到shell文件夹中的cvs中,Jenkins配置为通过具有“执行Shell”构建步骤的作业在Linux机器上执行它:
bash -ex shell/clear-logs.sh myuser
Run Code Online (Sandbox Code Playgroud)
但是Jenkins将整个sudo行用单引号引起来,这导致我的日志文件没有被删除(尽管Jenkins作业成功通过):
[workspace] $ /bin/sh -xe /tmp/hudson7785398405733321556.sh
+ bash -ex shell/clear-logs.sh myuser
+ USER=myuser
+ sudo rm -rf '/home/myuser/system/logs/*'
+ exit 0
Run Code Online (Sandbox Code Playgroud)
有什么想法让詹金斯这么做吗?如果我以root用户身份从Jenkins工作区位置调用脚本,那么它将正常工作。
编辑:
我在不同的cvs模块中有相同的shell脚本,由詹金斯在同一台Linux服务器上执行。创建了新的工作,可以是自由样式,也可以通过复制现有的工作来工作,但是没有什么区别。
好的,似乎通过将“jenkins”用户添加到“myuser”组并重新启动 jenkins 服务来解决此问题。如果日志目录为空,则 Jenkins 控制台输出会用单引号报告路径,因为未找到文件。但第二次运行该作业时,其中有文件,并且没有单引号,文件已正确删除。