在 pipeline 里通过 ssh 去远程启动一个服务

工程使用了 pipeline 分格,构建发布的 jar 包,已经按指定的目录发布上去了,然后在去执行启动的脚本,可能脚本写的有点问题,一直无法启动脚本,报 Pseudo-terminal will not be allocated because stdin is not a terminal. 这个提示,启动部分的一段如下:

stage(“Dev Verification”) {
sh “cd ${working_dir} && scp psdos-videoinspect-impl/target/psdos-videoinspect-impl.jar root@113.109.151.146:/mnt/data/datadeploy”
sh “ssh -o StrictHostKeyChecking=no root@113.109.151.146 && cd /mnt/data/datadeploy/psdos-videoinspect/ && ./start.sh restart”
}

各位帮忙定位一下,是啥问题?

社区群友发现指正了脚本问题,目前修改后能正常执行了,非常感谢群友的支持。

原来的脚本如下:
sh “ssh -o StrictHostKeyChecking=no root@113.109.151.146 cd /mnt/data/datadeploy/psdos-videoinspect/ && ./start.sh restart”

如下是正确脚本,执行就正常了,是缺少了 单冒号。

sh “ssh -o StrictHostKeyChecking=no root@113.109.151.146 ‘cd /mnt/data/datadeploy/psdos-videoinspect/ && ./start.sh restart’”

1赞

建议把脚本、命令、代码等内容,都按照 markdown 的格式来写,这样方便大家拷贝。

有事列吗参考吗?都统一规范也是比较好的,格式统一,规范整洁。

Markdown 的规范,网络上有很多的。不过,你可以参考这个帖子里的 Jenkins CLI 的应用场景
里面的命令是不是会比较容易拷贝。