我正在使用jenkins,我正在尝试使用gitlab将代码部署到产品服务器中。所以我创建了一个新项目,选择了git项目和分支,选择了Poll SCM。
现在在execute shell中,我正在使用如下脚本代码:
ssh user@prod-server // in log, user got logged in
cd /myfolder // in log showing 'myfolder' not found
好像詹金斯在本地服务器而不是产品服务器中检查“ myfolder”文件夹,所以说是“未找到”。
那么,我该如何解决呢?为什么詹金斯不检查生产服务器中的“ myfolder”?
在执行ssh命令后,您没有交互式会话的问题(与坐在终端上时的情况不同)
如果只是一个命令,则可以将其传递给ssh
,如下所示:
ssh user@prod-server 'cd /myfolder'
您甚至可以将几个命令链接在一起:
ssh user@prod-server 'cd /myfolder && cat myfile'
使用以下命令分隔符:
-;
始终执行下一个命令。
-&&
仅在上一个成功的情况下才执行下一个命令。
-||
仅在上一个失败的情况下才执行下一个命令。
但是一旦收到太多命令,最好将它们放入外壳脚本中,然后执行该外壳脚本:(
ssh user@prod-server 'bash -s' < /path/to/local_script.sh
注意,在上面的示例中,local_script.sh
不需要将其复制到服务器)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句