jenkins执行shell命令修改不了目录的问题

原创
02/05 11:38
阅读数 2.4K

UPDATE:2021.6.30 jenkins可以自定义workplace来指定当前目录(普通-点击 高级 按钮),可以不用下面的方法。

jenkins默认是有一个当前目录作为运行环境,执行的操作均基于此目录,如果创建的jenkins项目是free style的,如果要执行远程命令,就不方便修改执行目录了。

例子:如果想通过jenkins执行一个sh脚本,里面有cd命令,项目是free style的,则用exectue command over ssh,会出一build不结束的现象。原因就是sh里不能出现cd命令去修改当前执行的目录。

要如何解决这个问题呢?

1种可选的方案是使用pipeline项目,用dir(目录){}代码来限制。但是pipeline使用上稍复杂,这里只是简单的执行一个命令,有点不太必要。

2种方案是使用嵌套sh调用。即jenkins执行一个简单的脚本,这个脚本再调用真正执行的脚本。其本质上是重新执行一个后台任务。如

jenkins.sh

#/bin/bash

nohup /dir/another.sh >/dev/null 2>&1

exit 0

another.sh才是真正的脚本,里面可以使用任何命令了。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部