Jenkins SSH shell closes before executing remote commands
我有一份詹金斯的工作,在"执行shell"下有以下命令:
1 2 | ssh [email protected] pwd |
我希望Jenkins服务器通过ssh连接到远程服务器,然后在远程服务器上运行一个命令。
相反,Jenkins连接到远程服务器,立即断开连接,然后在本地运行
1 2 3 4 5 6 7 8 | Started by user Johanan Lieberman Building in workspace /var/lib/jenkins/jobs/Test Github build/workspace [workspace] $ /bin/sh -xe /tmp/hudson266272646442487328.sh + ssh [email protected] Pseudo-terminal will not be allocated because stdin is not a terminal. + pwd /var/lib/jenkins/jobs/Test Github build/workspace Finished: SUCCESS |
编辑:知道为什么在
如果您没有以交互方式运行,ssh不会创建交互会话(因此您看到的"伪终端"错误消息),因此它与在交互终端中执行一系列命令不完全相同。
要通过ssh会话运行特定命令,请使用:
1 | ssh jenkins@YOUR_IP 'uname -a' |
远程命令必须作为ssh命令的单个参数正确引用。或者对简单的多行脚本使用bash-here-doc语法:
1 2 3 4 | ssh jenkins@YOUR_IP <<EOF pwd uname -a EOF |
我认为您可以使用发布over ssh插件在具有ssh的slave上执行命令:
如果源文件字段是必需的,也许您可以传输一个虚拟文件。
更新:另一个解决方案是使用ssh插件。也许这是比其他插件更好的解决方案:)