我使用jenkins,我正在尝试使用gitlab将我的代码部署到prod服务器中。 所以我创建了一个新项目,选择了git项目和分支,选择了Poll SCM。
现在在执行shell 中,我使用的脚本代码如下:
ssh user@prod-server // in log, user got logged in
cd /myfolder // in log showing 'myfolder' not found
似乎jenkins在本地服务器而不是prod服务器中检查'myfolder'文件夹,所以说'找不到'。
那么,我该如何解决这个问题呢?为什么jenkins没有在producion服务器中检查'myfolder'?
答案 0 :(得分:1)
执行ssh命令后,您没有交互式会话的问题(与您坐在终端时的情况不同)
如果它只是一个命令,你可以将其传递给ssh
,如下:
ssh user@prod-server 'cd /myfolder'
你甚至可以把几个命令连在一起:
ssh user@prod-server 'cd /myfolder && cat myfile'
使用以下命令分隔符:
- ;
始终执行下一个命令
- &&
仅在上一次成功时才执行下一个命令
- ||
仅在先前失败时才执行下一个命令。
但是一旦你得到太多的命令,最好将它们放在shell脚本中,然后执行那个shell脚本:
ssh user@prod-server 'bash -s' < /path/to/local_script.sh
(注意,在上面的示例中,local_script.sh
不需要复制到服务器)
答案 1 :(得分:0)
如果您需要将yr文件复制到外部服务器,可以使用&#34; scp&#34; (http://www.tecmint.com/scp-commands-examples/)或使用一些jenkins插件(例如已经告诉https://wiki.jenkins-ci.org/display/JENKINS/Publish+Over+SSH+Plugin)