tmp/durable-d67c81b9/script.sh: source: not found in docker
在jenkins中使用pipeline搭建工程,将脚本中docker run命令替换成 withDockerContainer格式
源命令为:
docker run -it --name xxx -v xxxxx imagename /bin/bash -c source build/envsetup.sh && lunch XXXXX && make XXX j`nproc`"
替换后为:
withDockerContainer(args: "-u XXXXX",
image: 'XXXXX:v0.1') {
sh "echo `pwd`"
sh "cd $DEST_DIR && source build/envsetup.sh && lunch XXXXX && make XXX j`nproc`"
}
jenkins报如下错误:
/home/jenkins/XXXXXX@tmp/durable-d67c81b9/script.sh: 2:
/home/jenkins/XXXXXX@tmp/durable-d67c81b9/script.sh: source: not found
从报错上看是找不到source命令,很奇怪为什么会跑到@tmp目录下取找这个命令,后来的解决方法是:
docker镜像是基于Ubuntu系统,默认使用dash,docker在没有指定的情况下会调用系统中的dash,修改docker中sh的指向,指向bash 该问题就能找到source命令了。
1、进入docker容器:
docker run -it XXXXXXXXX
2、查看默认sh的指向
ls -l /bin/sh
3、修改指向:执行命令选择否
sudo dpkg-reconfigure dash
选择否
或者使用链接指向:
ln -s /bin/bash /bin/sh
4、查看修改是否成功
ls -l /bin/sh
5、退出并将容器打上tag并保存为镜像,下次使用新的镜像即可